- - PR -
例外処理 PL/SQLのことで困ってます・・・
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-09-30 15:57
本人チカラ不足のため件名の問題にぶちあたってます。
どうか良い案がありましたらお助けくださいm(_ _)m PL/SQLで例外処理にジャンプしたいのですが、 例外処理に行かずエラー終了してしまいます。 エラー発生方法は、存在しないテーブル参照する方法です。 ちなみに、「PROGRAM_ERROR」という例外処理も コーディングしてみたのですがダメでした。 PGサンプルとエラーメッセージを以下に記述させて いただきます。 −−−−PG スタート−−−− DECLARE BEGIN 〜〜処理文〜〜 EXCEPTION WHEN OTHERS THEN ROLLBACK; END; −−−−PG エンド−−−− −−−−エラーメッセージ スタート−−−− 行12でエラーが発生しました。: ORA-06550: 行12、列53: PL/SQL: ORA-00942: 表またはビューが存在しません。 ORA-06550: 行12、列1: PL/SQL: SQL Statement ignored −−−−エラーメッセージ エンド−−−− お馬鹿ですみませんが宜しくお願いいたします。m(_ _)m 以上です | ||||
|
投稿日時: 2005-09-30 16:09
PL/SQLではテーブルが存在することが前提になるはずなので、
テーブルが存在しないから例外処理を行うということは出来ないと思います。 本件、パッケージ作成などで出ているようでしたら、「テーブルが無いのでコンパイルが出来ません」という意味となります。 #伝え方が難しい・・・ _________________ #「やらない」と「出来ない」を混同してはならない | ||||
|
投稿日時: 2005-09-30 16:31
テーブルが存在しなかった時のOracleエラーをハンドリングするのではなく、
テーブルの存在を確認するSQLを発行し、NOT_FOUNDをハンドリングする方向でいかがでしょうか?
| ||||
|
投稿日時: 2005-10-01 03:28
無理です。テーブルやフィールドが存在しない場合、そもそもPL/SQLをコンパイル出来ませんので、PL/SQLで記述された処理は実行されません。PL/SQL内に記述された例外ハンドらではなく、呼び出し側(何の言語を使っているのか分からないけど)でトラップするしかないでしょう。 もしくはSELECT文をexecute immediate命令を使って動的SQLとして実行することになるでしょう。この方法ならPL/SQLで記述された例外ハンドラでエラーを処理できるはずです。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||
|
投稿日時: 2005-10-02 10:28
甕星さん、夏椰さん、宣伝中止!さん
さっそくのご回答ありがとうございます。 本当に参考になりました。 これで水曜日の導入は乗り越えられそうです。 どうもありがとうございました。 以上です | ||||
|
投稿日時: 2005-10-02 12:45
Oracle関連でしたら、OracleにOTNというのがあります。
Oracle関係の技術関連の質問等を受け付けています。 本件のようなものはそちらのほうも参考にしてみてはいかがでしょうか? _________________ #「やらない」と「出来ない」を混同してはならない | ||||
1
