PostgreSQLでのプロシージャの作成と管理
このページでは、PostgreSQLにおけるプロシージャの作成、表示、削除方法について詳しく解説します。プロシージャは、複数のSQLステートメントをまとめて実行するための便利な機能です。
プロシージャの作成 (CREATE PROCEDURE)
プロシージャを作成するには、SQL文の「CREATE PROCEDURE」を使用します。これにより、一連のSQLステートメントをまとめて一つの実行単位として扱うことができます。
基本的な構文は次の通りです:
CREATE PROCEDURE プロシージャ名(引数名 引数の型, ...)
LANGUAGE 言語
AS $$
BEGIN
-- SQLステートメント
END;
$$;
例えば、従業員情報を挿入するプロシージャを作成する場合は、以下のように記述します:
CREATE PROCEDURE insert_employee(employee_id INT, employee_name TEXT)
LANGUAGE plpgsql
AS $$
BEGIN
INSERT INTO employees (id, name) VALUES (employee_id, employee_name);
END;
$$;
このプロシージャは、insert_employeeという名前で、従業員IDと名前を引数として受け取り、それをemployeesテーブルに挿入する処理を行います。
プロシージャの一覧を表示 (\df)
PostgreSQLでは、データベースに定義されているすべてのプロシージャを確認することができます。これを行うには、\dfコマンドを使用します。
\dfは、データベース内のすべての関数とプロシージャを一覧で表示します。特定のスキーマに限定して表示することもできます。例えば、publicスキーマのプロシージャのみを表示するには次のように入力します:
\df public.*
このコマンドを実行することで、プロシージャ名、引数、戻り値の型、言語などの情報が表示されます。
プロシージャの削除 (DROP PROCEDURE)
不要になったプロシージャを削除するには、DROP PROCEDURE文を使用します。プロシージャを削除すると、そのプロシージャに関連するリソースも解放されます。
基本的な構文は以下の通りです:
DROP PROCEDURE プロシージャ名(引数の型, ...);
引数が異なる場合には、引数の型も指定する必要があります。引数がない場合や、型が異なる場合、エラーが発生します。
例えば、先ほど作成したinsert_employeeプロシージャを削除するには次のように記述します:
DROP PROCEDURE insert_employee(INT, TEXT);
引数が正しく一致しないと削除できませんので、注意が必要です。また、IF EXISTSオプションを追加すると、プロシージャが存在しない場合にエラーを回避できます:
DROP PROCEDURE IF EXISTS insert_employee(INT, TEXT);