.net 如何动态获取触发OracleException的列

.net 如何动态获取触发OracleException的列,.net,odp.net,text-parsing,oracleexception,.net,Odp.net,Text Parsing,Oracleexception,如果我从insert或update语句返回了ORA-12899。如何在不解析字符串的情况下从OracleException中提取列名 ORA-12899:值对于列架构太大。TABLENAME.COLUMNNAME实际值:175,最大值:23 我想这样做: try { // Insert code. } catch (OracleException orclEx) { if (orclEx.Number == 12899) { string columnNa

如果我从insert或update语句返回了ORA-12899。如何在不解析字符串的情况下从OracleException中提取列名

ORA-12899:值对于列架构太大。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
}

我不知道如何在不解析错误消息的情况下执行此操作。 首先,我试图阻止坏数据进入数据库。 因此,在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进行更新

就解析错误消息而言,通过解析获取列名并不太困难