如果从insert或update语句返回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
}发布于 2011-11-10 16:51:59
我不知道如何在不解析错误消息的情况下做到这一点。首先,我试图防止坏数据进入数据库。因此,在ASP.NET表单中,我使用了一个正则表达式验证器,如下所示。这一个阻止您传递超过100个字符。您可以输入超过100个字符,但当您点击OK或Submit按钮时,它将不会处理数据,直到您缩短输入。
此外,我使用验证摘要来显示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进行更新。
就解析错误消息而言,通过解析获得列名并不太困难。
https://stackoverflow.com/questions/8079886
复制相似问题