Przekazuj tablicę z węzła postgres do funkcji plpgsql
Funkcja plpgsql:
CREATE OR REPLACE FUNCTION testarray (int[]) returns int as $
DECLARE
len int;
BEGIN
len := array_upper($1);
return len;
END
$ language plpgsql;
Zapytanie węzeł-postgres + tablica testowa:
var ta = [1,2,3,4,5];
client.query('SELECT testarray($1)', [ta], function(err, result) {
console.log('err: ' + err);
console.log('result: ' + result);
});
Wyjście z serwera węzła:
err: error: wartość tablicy musi zaczynać się od „{” lub informacji o wymiarze
wynik: niezdefiniowany
Próbowałem też rzutować parametr w zapytaniu klienta, nptestarray($1::int[])
który zwrócił ten sam błąd.
Zmieniłem argument funkcji na(anyarray int)
i zmienił się błąd wyjściowy:
err: error: niepoprawna składnia wejściowa dla liczby całkowitej: „1,2,3,4,5”
wynik: niezdefiniowany
Jak również kilka innych odmian.
Szukam wariacji, która nie powoduje błędu i zwraca 5.
Czytałem oProblem z tablicą analizującą Postgres i to pytanie o przepływność stosu na sparametryzowanych tablicach w węzłach postgres:
node-postgres: jak wykonać zapytanie „WHERE col IN (<dynamiczna lista wartości>)”?Ale odpowiedź nie wydawała się istnieć.