2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PLSQLの基本

Last updated at Posted at 2025-09-30

PL/SQLとは

  • 正式名称は「Procedural Language/SQL」
  • Oracleデータベース上で動作するプログラミング言語。
  • 変数宣言、条件分岐(IF文)、繰り返し(LOOP, FORループ)など、一般的なプログラミング言語と同じような文法を持っている

これによりSELECT文の結果を変数に格納し、その結果の特定の値をIF文で判定しINSERTやUPDATEなどをループで1件ずつ実行するといった素のSQLだけでは難しい複雑な処理を実行できる。


PL/SQLの基本のひな型

DECLARE
  -- 変数宣言
BEGIN
  -- 処理
EXCEPTION
  WHEN OTHERS THEN
    -- 例外処理
END;

例文

TODO テーブルからデータを取得して出力し、件数に応じて処理を分岐する例

変数への代入、IF文、FORループを使って例文を作成

DECLARE
  v_count NUMBER;
BEGIN
  SELECT COUNT(*) INTO v_count FROM TODO;
  DBMS_OUTPUT.PUT_LINE('TODO件数: ' || v_count);

  IF v_count > 0 THEN
    FOR rec IN (SELECT * FROM TODO) LOOP
      DBMS_OUTPUT.PUT_LINE('TODO: ID=' || rec.id || ', Name=' || rec.name || ', Status=' || rec.status);
    END LOOP;
  END IF;
END;
/

実行結果

TODO件数: 4
TODO: ID=2, Name=買い物に行く, Status=completed
TODO: ID=3, Name=レポート作成, Status=in_progress
TODO: ID=4, Name=メール返信, Status=completed
TODO: ID=5, Name=掃除する, Status=completed

ストアドプロシージャについて

  • PL/SQLで作成した処理をOracleデータベースに名前付きオブジェクト(プロシージャ、ファンクション、パッケージ等)として登録したもの。
  • 他のPL/SQLやSQL文から呼び出して実行可能

プロシージャ登録のポイント

PLSQLからストアドプロシージャとして登録するには先頭行を変えるだけでよい

PL/SQLは下記のように書くが

DECLARE
  -- 変数宣言
BEGIN
  -- 処理内容
END;

先頭だけDECLAREからCREATE OR PROCEDUREに置き換えるだけでストアドプロシージャとして登録可能

CREATE OR REPLACE PROCEDURE SAMPLE_PROC IS
  -- 変数宣言
BEGIN
  -- 処理内容
END;

登録すると下記のように他のSQLやPL/SQLから呼び出すことができる。
 ブロックの最後には / を付けて実行する。

BEGIN
  SAMPLE_PROC;
END;
/
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?