• ベストアンサー

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")。行の残りは無視されました。

質問者が選んだベストアンサー

  • ベストアンサー
  • Haizy
  • ベストアンサー率40% (404/988)
回答No.1

こんにちは。 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)
回答No.2

Haizyさんの言うとおり、1行目で構文エラーです。 PROCEDUREの綴りが間違っているように見えますが。。。 ここに記載した内容が間違っているだけでしょうか? Haizyさんへ。 パッケージでなくても、例外処理は記載できます。 パッケージで作成しているのは、プロジェクト内での コーディングルール等ではないのでしょうか?

関連するQ&A