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 はありません。エラーの収集は役に立ちません。OracleException の代わりに Exception を使用すると、同じ状況になります。

私は何が欠けていますか?

文字列操作を使用できますが、エラー メッセージの形式はどのように固定されていますか?

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 に答える