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);
但我怀疑,这就是你想要的。