Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

静的SQLでエラーを起こしたSQLを取得したい。

user12059890Feb 25 2012 — edited Feb 25 2012
Oracle10.2.0.4

現在、バッチ処理の中でSQLエラー(一意制約違反や桁あふれなど)を起こしたSQLを取得すべく
動的SQLを使用しております。

具体的に申しますと、下記のようなイメージです。
vSQL varchar2(10000);
vSQL := 'SQL文';
execute immediate vSQL ;

そしてSQLエラーが発生すると、exception句に制御が移るので
そこで変数vSQLをログファイルに出力してエラーが発生したSQLを特定しています。

それはそれでいいのですが、静的SQLでも同様なことができないかと思っております。
動的SQLだとバインド変数を加味しないといけないのが(パラメタが多いと)大変なんです。
またカーソルシェアリングパラメタはデフォルトのexactから変えたくありません。
あと、トレースログへの出力もパフォーマンスを考慮してデフォルトの必要以上はしたくありません。

静的SQLなら正常にパースできた分ならv$SQLを参照して直前に実行したSQL文を取得できますが
エラーとなったSQLだとどうやって取得したらいいのか、はたまた取得できなないものなのかすら検討がつきません。
できるかできないかだけでも結構ですので、ご教授いただけたらと思います。
できないのであれば、納得してバインド変数を指定できますので。
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 24 2012
Added on Feb 25 2012
1 comment
9,326 views