plpgsql 函数:
CREATE OR REPLACE FUNCTION testarray (int[]) returns int as $$
DECLARE
len int;
BEGIN
len := array_upper($1);
return len;
END
$$ language plpgsql;
node-postgres 查询 + 测试数组:
var ta = [1,2,3,4,5];
client.query('SELECT testarray($1)', [ta], function(err, result) {
console.log('err: ' + err);
console.log('result: ' + result);
});
节点服务器的输出:
err:错误:数组值必须以“{”开头或维度信息
结果:未定义
我还尝试在客户端查询中转换参数,就像testarray($1::int[])
返回相同的错误一样。
我将函数参数更改为(anyarray int)
,输出错误更改为:
错误:错误:整数的无效输入语法:“1,2,3,4,5”
结果:未定义
以及其他几个变体。
我寻找不产生错误并返回 5 的变体。
我阅读了关于Postgres parse-array 问题和关于 node-postgres 中参数化数组的这个 stackoverflow 问题:
但答案似乎并不存在。