PostgreSQL Select文実行時に変数を使いたい

MySQLでは

DECLARE @myvar INT
SET @myvar = 5

SELECT *
FROM somewhere
WHERE something = @myvar

普通のSQL文の中で変数を利用する事が可能ですが、PostgreSQLでは単純にはできません。

仕方がないので PL/PGSQLを利用します。

tempテーブルを作成して実行結果確認

重みを変えるごとに、月をさかのぼるSQLです。

omomiを整数で変数宣言させます。

DO $$
DECLARE omomi integer;
BEGIN

omomi := 1;

DROP TABLE IF EXISTS temp;
CREATE TABLE temp AS
SELECT to_number(to_char(date_trunc('month', now()) - interval '1 month' * omomi,'YYYYMM'),'999999')::int as gatsudo,'テスト' as name;

END $$;

いったん、tempテーブルを吐き出す事で、SELECT文の結果を格納させて、値を確認できるようにします。

まとめ

変数を利用してゴリゴリにPL/Pgsqlを利用したレコード挿入文を作成するのですが、作成時に少しずつ値を検証したいときとっても不便でした。

とりあえず、この方法を利用すれば、いったんテーブルを見ないといけないという手間が発生しますが、全体的な完成は求めなくても、少しずつ実行させて値を表示させながら作り上げていく事が可能です。