我有一张桌子:
CREATE TABLE tbl_temp (id serial, friend_id int, name varchar(32));
我希望我可以运行以下SQL:
PREPARE x AS SELECT {$1,friend_id} FROM tbl_temp WHERE id = ANY($2);
EXECUTE x(33, ARRAY[1,2,3,4])
我基本上都在寻找一个声明,它将返回一个包含两个整数的数组,其中第一个将是用户输入,第二个将来自表格列,如friend_id
。
在PostgreSQL中真的有可能吗?
SELECT($ 1,friend_id)FROM tbl_temp;
的结果EXECUTE x(44);
row
--------
(44,1)
(44,2)
(44,3)
(3 rows)
如果我使用PQgetvalue(PGres, 0, 0)
,结果如何:{44,45}
或类似(44,45)
?
答案 0 :(得分:19)
我想你想使用array constructor syntax:
SELECT ARRAY[$1, friend_id] FROM tbl_temp WHERE id = ANY($2)
答案 1 :(得分:4)
我不确定我明白你想要什么...
返回数组,执行此操作。
SELECT (44, "friend_id") FROM "tbl_temp" WHERE id = ANY(ARRAY[1,2,3,4]);