PostgreSQL のプレーン SQL には変数がありません。リテラル定数をそのままSELECT
ステートメントに記述できます。
INSERT INTO profile_answers_new (pro_ans_frn_pro_id, pro_ans_name)
SELECT 1234, pro_ans_name -- 1234 being @new_pro_id (integer)
FROM profile_answers_old
WHERE profile_id = 1
元のステートメント ( ) にあるような式は、/ /pro_ans_frn_pro_id = @new_pro_id
に評価されます。あなたは確かにそれを望んでいません。TRUE
FALSE
NULL
パラメータを渡したい場合は、次のような関数を作成する必要があります。
CREATE OR REPLACE FUNCTION foo(int)
RETURNS void LANGUAGE sql AS
$func$
INSERT INTO profile_answers_new (pro_ans_frn_pro_id, pro_ans_name)
SELECT $1, pro_ans_name
FROM profile_answers_old
WHERE profile_id = 1;
$func$;
電話:
SELECT foo(1234);
しかし、私は疑います、それはあなたが望むものです。