gpt4 book ai didi

PostgreSQL:带有 ANY($1) 的 PREPARED 语句

转载 作者:行者123 更新时间:2023-11-29 11:43:58 27 4
gpt4 key购买 nike

我想创建一个 PREPARED STATEMENT,其中输入是一些未知数的整数。我尝试做的方式是

PREPARE prep_select_data AS SELECT ARRAY[$1, id], $1, * FROM tbl_data WHERE id = ANY($1);

我得到的错误是:

ERROR:  op ANY/ALL (array) requires array on right side
LINE 1: ...ELECT ARRAY[$1, id], $1, * FROM tbl_data WHERE id = ANY($1);
^

我无法弄清楚这个问题。

请指教。

问候,
马亚克

最佳答案

如错误所述,您需要将 $1 指定为数组(整数):

-- DEALLOCATE prep_select_data;
PREPARE prep_select_data (int[]) AS
SELECT
$1 || ARRAY[id], $1, *
FROM
tbl_data
WHERE
id = ANY($1);

我将 ARRAY[$1, id] 更改为 $1 || ARRAY[id],所以结果如下:

EXECUTE prep_select_data ('{1, 2}');
?column? | ?column? | id | value
----------+----------+----+-------
{1,2,1} | {1,2} | 1 | aaa
{1,2,2} | {1,2} | 2 | bbb

这是因为(来自 doc ):

multidimensional arrays must have matching extents for each dimension. A mismatch causes an error report.

关于PostgreSQL:带有 ANY($1) 的 PREPARED 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6397382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com