首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态获取触发OracleException的列

如何动态获取触发OracleException的列
EN

Stack Overflow用户
提问于 2011-11-10 13:02:19
回答 1查看 270关注 0票数 0

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

ORA-12899:值太大,不适合列“SCHEMA”。“TABLENAME”。“COLUMNNAME”(实际值: 175,最大值: 23)。

我想做这样的事情:

代码语言:javascript
复制
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
}
EN

回答 1

Stack Overflow用户

发布于 2011-11-10 16:51:59

我不知道如何在不解析错误消息的情况下做到这一点。首先,我试图防止坏数据进入数据库。因此,在ASP.NET表单中,我使用了一个正则表达式验证器,如下所示。这一个阻止您传递超过100个字符。您可以输入超过100个字符,但当您点击OK或Submit按钮时,它将不会处理数据,直到您缩短输入。

此外,我使用验证摘要来显示ErrorMessage。

代码语言:javascript
复制
<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进行更新。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8079886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档