0

挿入または更新ステートメントから ORA-12899 が返された場合。文字列を解析せずに OracleException から列名を抽出するにはどうすればよいですか?

ORA-12899: 列"SCHEMA"."TABLENAME"."COLUMNNAME"の値が大きすぎます(実際: 175、最大: 23)。

私はこのようなことをしたいと思います:

try
{
    // Insert code.
}
catch (OracleException orclEx)
{
    if (orclEx.Number == 12899)
    {
        string columnName = GetColumnName(orclEx);
        throw new Exception(columnName + " value is too long.", orclEx);
    }
}
finally
{
    // Finally code
}
4

1 に答える 1

0

エラーメッセージを解析せずにこれを行う方法がわかりません。そもそも悪いデータがデータベースに入らないようにしています。したがって、ASP.NET フォームでは、このような正規表現バリデーターを使用します。これにより、100 文字を超える文字を渡すことができなくなります。100 文字以上入力できますが、[OK] または [送信] ボタンをクリックすると、入力を短くするまでデータは処理されません。

さらに、検証の概要を使用して ErrorMessage を表示します。

<asp:RegularExpressionValidator ID="regExpInspectionNotes" runat="server" SetFocusOnError="true" Text="*"  ControlToValidate="txtInspectionNotes" ErrorMessage= "Maximum length of inspection notes is 100 characters." ValidationExpression="^[\s\S]{1,100}$" Display="Dynamic"> </asp:RegularExpressionValidator>

また、値をストアド プロシージャに渡し、PL/SQL を使用して更新を行います。

エラー メッセージを解析する限り、解析によって列名を取得することはそれほど難しくありません。

于 2011-11-10T16:51:59.653 に答える