2012-04-28 58 views
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 

没有innerException。错误收集不起作用。使用Exception而不是OracleException时的情况相同。

我错过了什么?

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

+0

是自定义错误消息ORA-XXXXX号每个错误消息都是唯一的? – Sathya 2012-04-28 17:21:56

回答

-1

尝试

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

代替

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

+0

什么是'pkg_msg'?看起来像一个自定义库/包。 – Sathya 2012-04-28 17:14:47

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;