微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在自定义数据类型 (PostgreSQL) 上使用 CallableStatement (JDBC)?

如何解决如何在自定义数据类型 (PostgreSQL) 上使用 CallableStatement (JDBC)?

我创建了一个特定的数据类型以在我的 Postgres 数据库函数中使用:

CREATE TYPE custom_object AS (status status,operation expiration_operation,expiry_date TIMESTAMP);

函数示例如下:

CREATE OR REPLACE FUNCTION function_to_call(
in_object custom_object[]
)
RETURNS VOID
LANGUAGE plpgsql
AS $$
BEGIN

RAISE NOTICE 'ARRAY RECEIVED';
END
$$;

从 Postgres,我可以将它用于“custom_object”类型的数组:

select function_to_call(array[('Active','Expire',Now() AT TIME ZONE 'UTC'),('Completed','Delete',Now() AT TIME ZONE 'UTC')]::custom_object[]);

然后,从 Java 开始,我将使用 Callablestatement。

final String[][] policy = {{"Active","Expire",new Date().toString()},{"Completed",new Date().toString()}};
final Connection conn = DatabaseConnectionProvider.getConnection(appConfig);
final CallableStatement stmt = conn.prepareCall("{call function_to_call(?)}");
Array arrayL;
arrayL = conn.createArrayOf("VARCHAR",labelArray.toArray());
stmt.setArray(1,policy);

有没有办法可以按照函数的预期直接将该数组的类型声明为“custom_object”,或者我应该作为常规 varchar 数组传递然后在过程中进行一些转换?

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。