【PL/SQL】変数・定数の使い方

PL/SQLは、Oracleデータベースで広く使用されているプログラミング言語で、変数を使用してデータの操作や計算を行うことができます。この記事では、PL/SQLでの変数の宣言方法から、値の代入やSQLクエリ結果の取得、定数の使用方法までを分かりやすく解説します。

PL/SQLでの変数宣言

PL/SQLでは、DECLAREセクションで変数を宣言します。変数のデータ型を指定することで、文字列や数値など、さまざまなデータを扱うことができます。

DECLARE
    v_employee_name VARCHAR2(50);  -- 文字列型の変数
    v_salary NUMBER;               -- 数値型の変数
BEGIN
    -- ここで変数を使用できます
END;

VARCHAR2は文字列を、NUMBERは数値を格納するためのデータ型です。このように、用途に応じて適切なデータ型を選びます。

変数に値を代入する方法

変数を宣言したら、:= を使って値を代入します。これは、PL/SQLで変数にデータを設定する標準的な方法です。

DECLARE
    v_employee_name VARCHAR2(50);
    v_salary NUMBER;
BEGIN
    v_employee_name := 'John Doe';  -- 名前を代入
    v_salary := 50000;              -- 給与を代入
END;

変数を使った計算や操作

宣言された変数は、他の変数との計算や文字列操作に使用できます。たとえば、給与に基づいてボーナスを計算する例を以下に示します。

DECLARE
    v_employee_name VARCHAR2(50);
    v_salary NUMBER;
    v_bonus NUMBER;
BEGIN
    v_employee_name := 'Jane Doe';
    v_salary := 60000;

    -- 給与の10%をボーナスとして計算
    v_bonus := v_salary * 0.1;

    -- 結果を表示
    DBMS_OUTPUT.PUT_LINE('Employee: ' || v_employee_name);
    DBMS_OUTPUT.PUT_LINE('Bonus: ' || v_bonus);
END;

SQLクエリの結果を変数に格納する

PL/SQLでは、SELECT INTO構文を使用して、SQLクエリの結果を変数に代入することができます。以下の例では、従業員テーブルから名前と給与を取得し、それを変数に格納しています。

DECLARE
    v_employee_name VARCHAR2(50);
    v_salary NUMBER;
BEGIN
    -- テーブルから値を取得して変数に代入
    SELECT employee_name, salary INTO v_employee_name, v_salary
    FROM employees
    WHERE employee_id = 101;

    DBMS_OUTPUT.PUT_LINE('Employee: ' || v_employee_name);
    DBMS_OUTPUT.PUT_LINE('Salary: ' || v_salary);
END;

定数を使う方法

変数と同様に、定数もPL/SQLで使用できますが、一度値を設定すると変更できません。定数を使用する場合、CONSTANTキーワードを付けて宣言します。

DECLARE
    v_bonus_rate CONSTANT NUMBER := 0.1;  -- 定数としてボーナス率を宣言
    v_salary NUMBER := 60000;
    v_bonus NUMBER;
BEGIN
    v_bonus := v_salary * v_bonus_rate;

    DBMS_OUTPUT.PUT_LINE('Bonus: ' || v_bonus);
END;

定数は、計算に使用する固定値を扱う際に便利です。この例では、ボーナス率が10%で固定されており、これを元にボーナス額を計算しています。

まとめ

PL/SQLでの変数の使い方について、宣言から値の代入、SQL結果の取得、定数の使用までを解説しました。変数をうまく使うことで、より柔軟で効率的なデータ処理が可能になります。変数の適切な使用方法をマスターし、PL/SQLプログラムの生産性を向上させましょう。