我有一个SQL Server 2008特定的查询如何在PostgreSQL中执行相同的查询。
INSERT INTO profile_answers_new (pro_ans_frn_pro_id, pro_ans_name)
SELECT pro_ans_frn_pro_id = @new_pro_id , pro_ans_name
FROM profile_answers_old WHERE profile_id = 1
如何将此查询转换为PostgreSQL特定的查询。
答案 0 :(得分:2)
PostgreSQL中的普通SQL中没有变量。您可以将文本常量按1>编写到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);
但我怀疑,这就是你想要的。