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);
});
ノードサーバーからの出力:
エラー: エラー: 配列の値は "{" で始まる必要があります または次元情報
結果: 未定義
testarray($1::int[])
また、同じエラーが返されたように、クライアントクエリでパラメーターをキャストしようとしました。
関数の引数を に変更する(anyarray int)
と、出力エラーが変更されました。
エラー: エラー: 整数の入力構文が無効です: "1,2,3,4,5"
結果: 未定義
他のいくつかのバリエーションと同様に。
エラーが発生せず、5 を返すバリエーションを探します。
Postgres parse-array の問題と、node-postgres のパラメーター化された配列に関するこのスタックオーバーフローの質問について読みました。
しかし、答えはそこにはなかったようです。