2012-01-15 13 views
0

FOREIGN KEY制約に違反した場合に、-2291例外をキャッチするプロシージャ/関数がパッケージに含まれています。 PL/SQLパッケージでグローバル例外を宣言する

は、私は別のプロシージャから例外を削除し、そのようなパッケージ本体でそれを宣言した:

e_ouder_niet_gevonden EXCEPTION; 
PRAGMA EXCEPTION_INIT(e_ouder_niet_gevonden,-2291); 

を今、私はパッケージのプロシージャのいずれかを使用する場合は問題ありません。しかし、私が達成したいのは、どのプロシージャー/関数もその例外を使用できるということです。これをどうやってやりますか?

+0

あなたがパッケージ内のものだけでなく、パッケージ外の*すべての*手続きを意味するのでしょうか? – Sathya

+0

はい、それはできませんか?私はそれもむしろ奇妙だと思ったが、それは私がやっている任務の一部なので、可能だと思った。 – Mekswoll

+0

私が知っている限り、それは不可能だ。既存のエラーに基づいてカスタム例外を作成するようOracleに依頼しているので、どこでも例外を宣言する必要があります。 – Sathya

答えて

5

解決策: 例外をパッケージ本体に入れるのではなく、パッケージ仕様を入れる必要があります。あなたは、あなたが例外ブロックでこれを置くことができ、パッケージの外手順で例外を使用する場合:

WHEN packagename.exception_name THEN 

これは問題なく動作します。

+0

これが解決策であれば、それが解決されたことを他人に示すためにあなた自身の答えを受け入れるべきです。私はあなたが例外を保持するために別のパッケージを持っているので、彼らが入っているランダムなパッケージを覚えていないようにするために、このルートを進んでいくことをお勧めします。 – Ben

+0

チップが自分の解決策を受け入れることを感謝します。私は明らかに明日からそれを受け入れることができます。そして、私は例外を自分のパッケージに入れるほうがはるかに良いだろうと同意しますが、これはちょっとしたエクササイズで、同じパッケージに入れてもかまいません:-)。 – Mekswoll

+0

Hmm :)私の(自己)削除された答えはパッケージ仕様に入れて言及していますが、私はpackage_name.exceptionを参照するとは思っていませんでした:) Neverethess、good stuff。 – Sathya

関連する問題