我目前正在研究 PostgreSQL 中的一个函数,它接受一个整数数组。函数中的所有内容都按预期工作,但是在函数的某一点上,我执行以下操作:
EXECUTE
'INSERT INTO tmptable (user_id)
SELECT DISTINCT user_id FROM user_skills
WHERE skill_values_id=ANY('||selected_skills||')';
我的函数能够在代码中的其他位置读取数组,但是这部分会引发以下错误:
程序执行失败
ERROR: malformed array literal: "
INSERT INTO tmptable (user_id)
SELECT DISTINCT user_id FROM user_skills
WHERE skill_values_id=ANY("
最后 - 错误消息底部有一行说:
DETAIL: Array value must start with "{" or dimension information.
任何想法如何让任何和整数数组发挥得很好?我假设它与||有关浓缩把它扔成一串?
答案 0 :(得分:3)
不要连接值,而是使用参数:
EXECUTE
'INSERT INTO tmptable (user_id)
SELECT DISTINCT user_id FROM user_skills
WHERE skill_values_id=ANY($1)'
using selected_skills;
手册中的更多细节: