21

一部のアプリケーションで使用される次の手順があります。

procedure p1
is
begin
  bla bla bla;  
end;

ただし、例外処理ブロックはありません。そのため、アプリケーションはこの機能に従って作成されました。

ここで、p1 にエラーを記録する必要があります。ただし、この手順を使用するアプリケーションには影響しません。

このようなもの:

procedure p1
is
begin
  bla bla bla;

  exception when others then
    log_error(sqlcode, sqlerrm);
    raise_new_exception (sqlcode, sqlerrm);
end;

raise_application_errorの場合、最初のパラメーターは [-20000, -20999] の範囲内である必要があります。そのため、例外 no_data_found が発生した場合、このエラーを発生させることはできません。

exception_initの場合、2 番目のパラメーターは可変であってはなりません。数値リテラルでなければなりません。

PS: 一時的な解決策として、私はすぐに実行を使用しています

4

1 に答える 1

34

エラーが変わらない場合は、次のように変更します

...
exception when others then
  log_error(sqlcode, sqlerrm);
  raise;
end;
/

これはドキュメントで説明されています。

于 2013-02-20T11:24:26.410 に答える