Closed5

SupabaseにおけるPostgreSQLを色々さぐる

masa5714masa5714

SupabaseどころかPostgreSQLが全く分からない子なので、
基本的なことを調べながら自分的メモを作っていく。

このページを見て混乱しても責任を負いません。
あくまで個人用。発信用ではなく。(Zennのスクラップは誰かに向けて発信するものではない!!という解釈をしています。)

▼下記が網羅的に書かれていていい感じ
https://qiita.com/ebichan_88/items/1effb09fbc458276ea51

masa5714masa5714

プロシージャ

たぶん関数みたいなもの。(関数は返り値がある。プロシージャはただ処理するだけ。つまり、「たぶん関数みたいなもの」っていう言い方は正確ではないと思うんだわな。)

CREATE OR REPLACE PROCEDURE test1() 
AS $$
DECLARE
  str1 VARCHAR(20);
BEGIN
  str1 := 'こんにちは';
  RAISE INFO 'msg:%', STR1; --'msg:こんにちはと出力される
END;
$$
LANGUAGE plpgsql;

こんな感じで書いておくと、

call test1(); で自由に処理を呼び出すことができる。

プロシージャはSELECT文で確認できる

SELECT proname,proowner,pronargs,prosrc, proargtypes FROM pg_proc order by oid DESC

で登録したプロシージャを一覧で観ることができる。

SELECT proname,proowner,pronargs,prosrc, proargtypes FROM pg_proc order by oid DESC
WHERE proname = 'test1';

WHERE句をつけると指定したプロシージャを見れる。

不要なプロシージャがあったら

DROP PROCEDURE test1();

不要な関数があったら

DROP FUNCTION test1();

で削除できる。
引数がある場合は、引数のデータ型を指定する必要があるらしい。

DROP PROCEDURE test1(int);

▼ 参考
https://itsakura.com/postgresql-pl-pgsql

masa5714masa5714

SQL Editorから関数の記述を確認する

▼どんな関数があるかを一覧で見る

SELECT proname,proowner,pronargs,prosrc FROM pg_proc order by oid DESC

▼関数の記述を確認

SELECT pg_get_functiondef((SELECT oid FROM pg_proc WHERE proname = 'ここに関数名'));

出てきた結果はエディタに貼るなどすると改行が効いて見やすくなります。

masa5714masa5714

SupabaseのGUI「SQL Editor」から実行すると、
RAISE INFO等のメッセージを表示させることはできない模様。

INFOを使うことで、JSで言うところのconsole.log的なことに活用できるらしい...?いい使い方かは知らんけど、使えるもんは使おう。

spql でCmder等から実行すると INFOもNOTICEも出力できる。
実装上不便なのでコマンドからやるか、 pgAdmin を使うべきかと。

SupabaseデフォルトのGUIとの共存が難しいね...。

masa5714masa5714

pgAdmin めっちゃいい感じ!
エラー文がしっかりしてるのでPostgreSQLの書き方の練習にちょうどいいね。

このスクラップは2022/08/15にクローズされました