- ベストアンサー
ORACLE PL/SQLの例外処理について
ストアドプロシージャを登録したところ、「EXCEPTION」キーワードをORACLEが 認識してくれずエラーが返ってきました。どうしてか教えて下さい。 よろしくお願いします プロシージャのコード) CREATE OR REPLACE PRCEDURE TEST_PROC( P1 OUT NUMBER, P2 OUT VARCHAR2 ) AS BEGIN UPDATE VIEW経理システム制御F SET 処理状況 = ''; COMMIT; EXCEPTION WHEN OTHERS THEN P1 := SQLCODE; P2 := SQLERRM; END; / 登録時のメッセージ) エラー行: 1: エラーが発生しました。 ORA-00922: オプション指定されていないか、または無効です 不明なコマンドです(開始"EXCEPTION ...")。行の残りは無視されました。 不明なコマンドです(開始"P1 := SQLC...")。行の残りは無視されました。 不明なコマンドです(開始"P2 := SQLE...")。行の残りは無視されました。 不明なコマンドです("END")。行の残りは無視されました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 1行目で、エラーなのでそもそも、プロシージャ構文では無いでしょうか? ORACLEって、パッケージにしなければならないのでは??? ↑ ウチのプロジェクト中の勝手なルールかも(^^; とりあえず、パッケージにしてみてはどうでしょう。 TEST_PACKという、パッケージにする例 CREATE OR REPLACE PACKAGE BODY TEST_PACK AS PROCEDURE TEST_PROC( P1 OUT NUMBER, P2 OUT VARCHAR2 ) AS BEGIN UPDATE VIEW経理システム制御F SET 処理状況 = ''; COMMIT; EXCEPTION WHEN OTHERS THEN P1 := SQLCODE; P2 := SQLERRM; END TEST_PACK; / では、だめですか? 目的と違うかもしれませんが・・・。 なんか、動いているのを見ると、どうも、ウチのはパッケージになってるようなので。 参考になれば、でわ。
その他の回答 (1)
- Rafter
- ベストアンサー率33% (4/12)
Haizyさんの言うとおり、1行目で構文エラーです。 PROCEDUREの綴りが間違っているように見えますが。。。 ここに記載した内容が間違っているだけでしょうか? Haizyさんへ。 パッケージでなくても、例外処理は記載できます。 パッケージで作成しているのは、プロジェクト内での コーディングルール等ではないのでしょうか?