【问题标题】:Show error message from PL/SQL procedure to the client从 PL/SQL 过程向客户端显示错误消息
【发布时间】:2011-11-03 21:28:20
【问题描述】:

我的 C# 客户端中有一个 try 块,它执行 Oracle PL/SQL 存储过程和一个使用 Exception 类的 catch 块。

在存储过程中,如果在数据处理过程中遇到特定条件,则使用raise_application_error引发异常。

示例: raise_application_error(-20001, myErrMsg)

然后我想捕捉这个异常并在 C# 客户端中显示这个特定的消息。

对于所有其他与数据库相关的错误(例如约束失败、连接错误),我想捕获它们并显示在 C# 客户端的自定义错误消息中。

在我的catch 块中,我是否应该在异常消息字符串中搜索字符串ORA-20001,然后将其传播到客户端,以确定是否从过程中抛出了上述异常?

【问题讨论】:

    标签: c# oracle exception plsql


    【解决方案1】:

    如果可以的话,捕获一个 Oracle 异常。

      try
        {
          cmd.CommandText = "DELETE FROM myable";
          cmd.ExecuteNonQuery();
        }
        catch (OracleException ex)
        {
           //Put your ORA-20001 logic here, or call a common method as shown
           HandleOracleException(ex);
        }
    

    在 catch 处理程序中,检查数字是否为 20001,然后采取适当的措施。

    以下是 OracleException 的一些属性

    数据源 指定包含连接到 Oracle 实例的信息的 TNS 名称

    错误 指定包含有关信息的一个或多个 OracleError 对象的集合 Oracle数据库产生的异常

    内部异常 继承自异常

    留言 指定异常中出现的错误信息

    数字 指定 Oracle 错误号

    程序 指定导致异常的存储过程

    来源 指定生成错误的数据提供者的名称

    堆栈跟踪 继承自异常

    目标网站 继承自异常

    链接了解更多信息:

    http://download.oracle.com/docs/cd/B19306_01/win.102/b14307/OracleExceptionClass.htm

    【讨论】:

      猜你喜欢
      • 2019-10-05
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 2018-03-08
      • 2020-08-30
      • 2019-01-26
      • 2018-06-04
      • 2023-04-09
      相关资源
      最近更新 更多