Pase la matriz de node-postgres a la función plpgsql
La función plpgsql:
CREATE OR REPLACE FUNCTION testarray (int[]) returns int as $
DECLARE
len int;
BEGIN
len := array_upper($1);
return len;
END
$ language plpgsql;
El nodo-postgres query + test array:
var ta = [1,2,3,4,5];
client.query('SELECT testarray($1)', [ta], function(err, result) {
console.log('err: ' + err);
console.log('result: ' + result);
});
Salida del servidor de nodo:
err: error: el valor de la matriz debe comenzar con "{" o información de dimensión
resultado: indefinido
También traté de emitir el parámetro en la consulta del cliente comotestarray($1::int[])
que devolvió el mismo error.
Cambié el argumento de la función a(anyarray int)
y el error de salida cambió:
error: error: sintaxis de entrada no válida para entero: "1,2,3,4,5"
resultado: indefinido
Así como un par de otras variaciones.
Busco la variación que no produce error y devuelve 5.
Leí sobre elPostgres problema parse-array y esta pregunta de stackoverflow sobre arreglos parametrizados en node-postgres:
node-postgres: cómo ejecutar la consulta "WHERE col IN (<lista de valores dinámicos>)"?Pero la respuesta no parecía estar ahí.