🪨

PostgreSQL Procedure

2023/08/22に公開

Overview

ネット解説を引用

SQLにおけるストアドプロシージャって何? データベース(SQL)で利用するストアドプロシージャは簡潔に言うと「複数の命令をまとめた関数」です。 元々複数の命令文を実行しないといけなかったデータベース処理を、1つの関数にまとめることで関数を一度呼び出すだけで処理を完了させることが出来るようになります。

summary

SQLのクエリを関数にして、実行できるのはわかったので使ってみようと思います。今回はSupabaseを使ってクエリーを実行しています。

プロシージャを作る

  1. todosテーブルから、データを習得するプロシージャを作成する
CREATE OR REPLACE FUNCTION GetTodosLimited()
RETURNS SETOF todos AS
$$
BEGIN
    RETURN QUERY SELECT * FROM todos LIMIT 3;
END;
$$ LANGUAGE plpgsql;
  1. プロシージャを実行してみる
SELECT * FROM GetTodosLimited();

実行結果はこんな感じです
以前、Flutterで作ってたアプリのデータが残ってたので使ってみたのですが、1件しか残ってませんでした笑

🔍プロシージャの確認方法

プロシージャを確認するには、以下のクエリを使用します。

SELECT proname, prosrc
FROM pg_proc
WHERE pronamespace = 'public'::regnamespace;

プロシージャを削除するには、以下のクエリを使用します。ここで procedure_name は削除したいプロシージャの名前です。

DROP FUNCTION IF EXISTS procedure_name();

例えば、InsertTodo プロシージャを削除する場合は次のようになります。

DROP FUNCTION IF EXISTS InsertTodo();

thoughts

プロシージャを使ってみた感想ですが、毎回SQL文を書かずに関数を実行するだけで、クエリーが実行できて便利だなと感じました。
他に作ってたテーブルでも使ってみたのですが、実行に失敗したものがあって、使いこなすにはまだ時間かかりそうです。

https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/stored-procedure/

Discussion