Oracleで PL/SQL を実行・作成した際によく発生するエラー のひとつが ORA-06550 です。
このエラーは単体で表示されることは少なく、PLS-xxxxx 系エラーとセットで出力されるのが特徴です。

本記事では、
-
ORA-06550 の意味
-
エラーメッセージの正しい読み方
-
よくある原因と対処方法
-
実務での確認ポイント
を 例付きで分かりやすく解説します。
ORA-06550 とは?
ORA-06550 は、
👉 PL/SQL のコンパイルエラーが発生したことを示すエラー です。
ポイントは次の通りです。
-
実行時エラーではない(構文・定義段階の問題)
-
PL/SQL ブロックやプロシージャ作成時に発生
-
実際の原因は 後続の PLS-xxxxx メッセージ に書かれている
よくあるエラーメッセージ例
👉 ORA-06550 は「入口」
👉 本当の原因は PLS-xxxx を必ず確認
ORA-06550 のエラー位置の見方
これは、
-
行:PL/SQLブロック内の行番号
-
列:その行の何文字目か
を示しています。
💡 SQL*Plus や SQL Developer では空行もカウントされるため、
ズレて見えることがある点に注意しましょう。
主な原因と対処方法
① セミコロン(;)の付け忘れ
NG例
OK例
👉 最も多い原因
👉 1行ずれて END 行でエラーが出ることも多い
② IF / LOOP / CASE の END 忘れ
NG例
OK例
③ 変数・定数の宣言漏れ(PLS-00201)
👉 v_test が DECLARE されていない
修正例
④ SQL 文と PL/SQL の混同
👉 これは PL/SQL 内でのみ有効
SQL単体で実行すると ORA-06550 が発生します。
⑤ プロシージャ・関数作成時の構文ミス
👉 セミコロン忘れで コンパイル失敗
で詳細確認が必須です。
コンパイルエラーの確認方法(重要)
プロシージャ/関数の場合
または
👉 ORA-06550 だけ見て修正しないこと
👉 必ず詳細エラーを確認
実務でのチェックリスト
ORA-06550 が出たら、次を順に確認すると早いです。
-
セミコロンの付け忘れはないか
-
IF / LOOP / CASE の END が揃っているか
-
変数は DECLARE されているか
-
SQL と PL/SQL を混同していないか
-
SHOW ERRORS で詳細を確認したか
まとめ
-
ORA-06550 は PL/SQL コンパイルエラーの総称
-
真の原因は PLS-xxxx エラー
-
行番号・列番号を正しく読み取ることが重要
-
構文ミス・宣言漏れがほとんど
PL/SQL 開発では避けて通れないエラーなので、
原因の型を覚えておくと復旧が非常に速くなります。
