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

标签 postgresql prepared-statement any

我想创建一个 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/

相关文章:

java - 使用 Checkstyles 防止准备好的语句泄漏

java - 使用准备好的语句查询列表 (JDBC)

java - 如何快速将大数据传输到mysql(JDBC)?

javascript - JS (jQuery) - 如果条件 - 任何数字

typescript - 使用 any 键入交叉点

arrays - Postgresql 数组总和

postgresql - 如何将示例数据库导入 postgres?

python - 在 python 文件中使用 google.protobuf.Any

java - 似乎无法为本地heroku应用程序设置本地java envar DATABASE url

javascript - Javascript/node.js 中的异步循环