2012-05-10 2 views
1

シナリオ:
私はDUP_VAL_ON_INDEXエラーコードのための定数を定義したい:特定のエラー・コードをoracleデータベースからプログラムでどのように取得しますか?

GCN_DUP_VAL_ON_INDEX  CONSTANT NUMBER := -1; 

しかし、私はプログラム的に値を設定したいと思います:

GCN_DUP_VAL_ON_INDEX  CONSTANT NUMBER := DUP_VAL_ON_INDEX.ERRCODE; 

はこれを行う方法がありますこのようなカスタム関数を作成していますか?:

CREATE OR REPLACE FUNCTION GET_DUP_VAL_ERR_CODE 
RETURN INTEGER 
IS 
BEGIN 
    raise dup_val_on_index; 
EXCEPTION 
    WHEN OTHERS THEN 
     RETURN SQLCODE; 
END; 
/
+2

何のため?非常に反対のことを行うのがより一般的です - エラーコードの定数例外を定義してください... –

+0

forallループ中にerorrsを一括して収集し、各例外に対してロギングを行います。エラーコードを使用して、次に何をするかを決定します。 – ScrappyDev

+0

@scrappythenellの 'forall'は、そのデータセット内の単一のレコードではなく、データセット全体に対して単一のエラーを発生させます。 1つのレコードに対して何か他のことをしたい場合はどうなりますか?そのような状況は可能ですか? – Ben

答えて

1

おそらくありません。

パッケージSYS.STANDARDをチェックしてください。これは、すべての例外、SQL関数、およびその他のすべてが実際に定義されている場所です。

、かなり単純明快:

DUP_VAL_ON_INDEX exception; 
    pragma EXCEPTION_INIT(DUP_VAL_ON_INDEX, '-0001'); 
関連する問題