同じような名前のテーブルを作りたい時に配列をforループで回して作りたいってとき時々ありますよね?
それもSQLだけでやってしまいたい時って結構ないでしょうか。
今回はそれをLATERAL FLATTENを使ってシュッとやる方法をご紹介します。
EXECUTE IMMEDIATE $$
DECLARE
table_names CURSOR FOR SELECT t.value || '_table' table_name
FROM LATERAL FLATTEN(INPUT => ['a', 'b', 'c', 'd']) t;
BEGIN
FOR t in table_names DO
-- なんかテーブルを使ってやりたい処理
END FOR;
END;
$$;
簡単な流れとしては
- LATERAL FLATTENでArrayを展開したものをクエリするCURSORを定義
- forループを回す
- やりたい処理を書く
以上です!
これをやりたい場面がいつかきっと来ると思います。
それでは!