如何使用带有rowtype数组的PostgreSQL函数作为Java中的参数

时间:2014-07-05 20:50:43

标签: postgresql jdbc types row spring-jdbc

如何从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;

1 个答案:

答案 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.