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);