5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Oracle】はじめてのPL/SQL

Last updated at Posted at 2025-03-17

はじめに

最近、アサインされたプロジェクトでOracle DBを使用することになりました。
筆者はそれまでの経験ではDB2のみを扱っていたため、Oracle DB特有のPL/SQLを学ぶ必要がありました。
そこで、学んだ内容を備忘録として残すことにしました。
これからPL/SQLを学ぶ方の参考になれば幸いです。

PL/SQLとは?

PL/SQL(Procedural Language for SQL)は、Oracle Database専用のプログラミング言語です。SQL(Structured Query Language)はデータベース操作のための言語ですが、PL/SQLはSQLの拡張として、プログラミング的な機能を追加しています。具体的には、条件分岐やループ処理、エラーハンドリングなど、データベース操作をより柔軟かつ効率的に行うための手段を提供します。

PL/SQLを使うことで、データベース内で直接処理を行うことができ、パフォーマンスの向上や、アプリケーション側の負担を減らすことができます。

PL/SQLの基本構文

PL/SQLの基本的な構文は以下のようになります。

DECLARE
    -- 変数宣言
BEGIN
    -- 実行するSQL文やPL/SQLの処理
    NULL; -- 何も実行しない場合
EXCEPTION
    -- エラーハンドリング
    WHEN OTHERS THEN
        -- エラー処理
        NULL;
END;

1. DECLARE

DECLAREブロックでは、PL/SQLで使用する変数を宣言します。この部分は任意で、必要な場合にのみ使用します。

2. BEGIN ... END

BEGINからENDの間に実行したい処理を記述します。ここではSQL文やPL/SQLの制御構造(条件分岐やループなど)を使って処理を行います。

3. EXCEPTION

EXCEPTIONブロックは、エラーハンドリングを行う部分です。PL/SQLの処理中にエラーが発生した場合に、どのように処理をするかを記述します。例えば、エラー発生時に通知を出すなどです。

実際にPL/SQLを使ってみよう

それでは、簡単なPL/SQLのサンプルを実行してみましょう。以下のコードは、データベース内に格納されている社員情報を処理する例です。

サンプルコード

DECLARE
    v_employee_name VARCHAR2(100);
    v_employee_salary NUMBER;
BEGIN
    -- 社員IDを指定して社員名と給与を取得
    SELECT employee_name, salary
    INTO v_employee_name, v_employee_salary
    FROM employees
    WHERE employee_id = 100;

    -- 結果を表示
    DBMS_OUTPUT.PUT_LINE('社員名: ' || v_employee_name);
    DBMS_OUTPUT.PUT_LINE('給与: ' || v_employee_salary);
    
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('指定した社員IDのデータは見つかりませんでした');
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('エラーが発生しました');
END;

説明

  1. DECLAREブロックv_employee_namev_employee_salaryという変数を宣言します。これらに社員名と給与を格納します。
  2. BEGIN ... ENDブロック
    • SELECT INTO文を使って、社員IDが100の社員の名前と給与を変数に格納します。
    • DBMS_OUTPUT.PUT_LINEを使って、結果を画面に表示します。
  3. EXCEPTIONブロック
    • NO_DATA_FOUNDエラーを捕捉し、データが見つからなかった場合にメッセージを表示します。
    • OTHERSで、その他のエラーを捕捉します。

実行方法

  1. SQL*PlusやOracle SQL Developerなどのツールを使用して、上記のコードを実行します。
  2. DBMS_OUTPUTを有効にすることで、コンソールに結果が表示されます。(コマンドSET SERVEROUTPUT ON で有効化されます)

まとめ

PL/SQLは、SQLを拡張してデータベース内での処理を効率よく行うための強力なツールです。基本的な構文を覚えることで、Oracle DBの処理をより柔軟に操作できるようになります。最初は簡単なコードから始め、徐々に複雑な処理に挑戦していくことをお勧めします。

実際には、PL/SQLパッケージという構造を用いてリソースを管理していくようなので、そちらについては以下の記事をぜひご確認ください。


5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?