4

我有这个程序:

create or replace PROCEDURE MyProc
(
     <some-parameters>
)
AS
  BEGIN
    if(<some-condition>) then
        RAISE_APPLICATION_ERROR('my custom error message');
    end if;
  END;

从 C# 调用它时:

try
{
    <call procedure>
}
catch(OracleException x)
{
    lblMessage.Text = x.Message;
}

我收到如下错误消息:

ORA-28008: my custom error message ORA-06512: at blah, line blah ORA-06512: at line blah

我只想:

my custom error message

没有内部异常。错误收集没有帮助。使用 Exception 而不是 OracleException 时的情况相同。

我错过了什么?

我可以使用字符串操作,但错误消息的格式有多固定?

4

2 回答 2

0

我使用返回参数来捕获 php。我认为相同的技术将在.net 中有用。(我认为可以在异常处理中捕获自定义消息并仅重新引发该自定义消息,但下面的方法肯定有效。:)

create or replace PROCEDURE MyProc (p_result out varchar2)
is
  ...
begin
  ...
  if error then
    p_result := 'my custom error message';
    return; -- exit procedure 
  end if;

  p_result := 'ok';
end;
于 2012-04-28T21:54:35.967 回答
-1

尝试

PKG_MSG.RAISE_ERROR(0,null,'我的自定义错误信息',null,null,null,null,null,null,null,null,null,null );

代替

RAISE_APPLICATION_ERROR('我的自定义错误信息');

于 2012-04-28T07:21:45.920 回答