如何从Java应用程序调用带有rowtype数组的postgres函数作为参数(该应用程序是一个Spring Web应用程序)?
当然我可以重构我的函数并使用几个基本类型的数组,但是然后在应用程序端函数调用将是丑陋的。
CREATE OR REPLACE FUNCTION process_orders
(
order_array orders[]
)
RETURNS bigint AS
$BODY$
BEGIN
-- bla bla bla :)
RETURN 0;
END;
$BODY$
LANGUAGE plpgsql;
答案 0 :(得分:1)
我希望类似函数的row constructor不适用于JDBC。请改用所述参数的文本表示
例如,如果您的表格为tbl (id int, txt text)
:
SELECT process_orders('{"(1,txt)","(1,txt)"}')
或(在重载函数面前明确无误):
SELECT process_orders('{"(1,txt)","(1,txt)"}'::tbl[])
空格和特殊字符的示例:
SELECT process_orders('"(1,txt)","(1,\"txt with space and '\")"}')
让Postgres告诉你:
SQL Fiddle.