Пусть у нас есть хранимая процедура:
1 2 3 4 |
CREATE OR REPLACE FUNCTION my_function(IN array_var_in bigint[]) RETURNS SETOF record AS $BODY$ ... |
Мы можем вызвать эту функцию из кода Java и даже из JasperReports. Для этого нам нужно значения для этого массива записать в виде строки через запятую, например:
1 |
String arrayParameters = "23,34,76"; |
Затем при вызове хранимой процедуры PostgreSQL нам передать туда эту строку и с помощью string_to_array преобразовать её в массив.
Пример для шаблона JasperReports:
1 |
select * from my_function(string_to_array($P{myJasperArrayParam}, ',') ::bigint[]) |
При вызове из кода Java можно записать так:
1 |
select * from my_function(string_to_array(?, ',') ::bigint[]) |
И, разумеется, нужно не забыть передать нашу строку в качестве параметра.