前提・実現したいこと
下記のSQLのtest1テーブルとtest2テーブルを入力引数として複数行の取得結果を返すことを考えています。
入力引数をSQL文に埋め込む場合、動的SQLに変更することで対応できることが分かったのですが、書き方がわかりません。
よろしくお願いいたします。
該当のソースコード
CREATE OR REPLACE FUNCTION public.sabun(
)
RETURNS TABLE(id text, key1 text, key2 text)
LANGUAGE 'plpgsql'
COST 100 VOLATILE ROWS 1000
AS $BODY$
BEGIN
RETURN QUERY
SELECT * FROM
(
(SELECT b.id,
MAX(CASE b.key WHEN 'key1' THEN b.value ELSE '' END) AS "KEY1",
MAX(CASE b.key WHEN 'key2' THEN b.value ELSE '' END) AS "KEY2"
FROM
(SELECT test1.id, a.key, a.value FROM test1 JOIN json_each_text(test1.data::json) a ON true) b
GROUP BY b.id
ORDER BY b.id)
EXCEPT ALL
(SELECT c.id,c.key1,c.key2 FROM test2 c ORDER BY id)
) d
ORDER BY d.id;
END
$BODY$;
補足情報(FW/ツールのバージョンなど)
・plpgsql
・postgres 10
回答1件
あなたの回答
tips
プレビュー