私が保守しているサイトでplsqlパッケージ/プロシージャ(Oracle 11g)を呼び出す状況があります。このプロシージャは、渡されたパラメータを使用して動的SQLの文字列を作成します(文字列「v_select」をコールします)。文字列の作成後、v_select動的SQL文字列を使用して参照カーソルが開かれます。以下の擬似コード。動的SQLが実行されたときにエラーが発生し、例外ブロックにキャッチされますか?
ここでは、例外が発生した場合の例外ブロック(WHEN OTHERS)があります。例外ブロックでは、DB内のテーブルにエラーが書き込まれます。動的SQLの実行中にエラーが発生した場合、エラーは例外ブロックで捕捉されていないようです(エラーテーブルにエントリが挿入されていません).Netレベルでエラーが表示されることがありますOracleのinvalid_numberエラーです。
最後に、私の質問は....私がオンラインで見るもの(それほど多かったわけではない)から、動的SQLチョークがあれば、これは例外ブロックによって捕捉されるべきです。これは正しいです?
refカーソルは、出力パラメータとして.netレイヤーに戻されます。このエラーは決して捕まえられないと言っていますか? –
ストアドプロシージャ内でカーソルからフェッチしない限り、ストアドプロシージャにはキャッチされません。これは、クエリが解釈され、クエリプランが生成されたときではなく、クエリが実行されるときに生成されるエラーです。 – antlersoft
それは理にかなっています。どうもありがとうございました! –