2

我无法将 NULL 值传递给需要 Array 类型的 JDBC 存储函数(使用可调用语句)。如果我试图将 IN 参数设置为 NULL,这只是一个问题(例如,我可以创建并传递一个空数组,但我不应该这样做)。

例如,我可以将其作为解决方法:

callableStatement.setObject(index, callableStatement.getConnection.createArrayOf("numeric", Array().asInstanceOf[Array[AnyRef]]))

但这让我很困扰。首先,应该有一个用于传递 NULL 数组的 API。其次,我无缘无故地创建了一个空数组(我必须创建正确的数组类型,所以这不是单行的,我需要支持几种不同的类型)。它变得混乱。

我认为我应该能够做到这一点(或者至少是非常相似的东西):

callableStatement.setNull(index, Types.ARRAY)

但这会导致异常:

com.edb.util.PSQLException:错误:函数 app_fetch_user_list_pkg.n_execute(字符变化,字符变化 [],字符变化,布尔值,整数)不存在

有任何想法吗?(我们正在使用 Postgresql/EDB 以及 Oracle ......到目前为止,我一直在尝试使用 Postgresql 实例)。

4

2 回答 2

4

好吧,我正在使用PreparedStatement.setNull(position, Types.ARRAY)9.4-1202-jdbc41 JDBC 驱动程序,它按预期工作。

于 2016-05-16T04:50:06.780 回答
2

尝试这个:

callableStatement.setString(index, "{}");
于 2015-06-02T23:10:48.177 回答