我在将NULL值传递给需要Array类型的JDBC存储函数(使用可调用语句)时遇到问题。这只是一个问题,如果我试图将IN参数设置为NULL(例如,我可以创建并传递一个空数组,但我不应该这样做)。
例如,我可以将其作为解决方法:
callableStatement.setObject(index, callableStatement.getConnection.createArrayOf("numeric", Array().asInstanceOf[Array[AnyRef]]))
但这让我感到困扰。首先,应该有一个用于传递NULL数组的API。其次,我没有充分的理由创建一个空数组(我必须创建正确的数组类型所以这不是一个单行,我&#39 ; ll需要支持几种不同的类型)。它变得混乱。
我应该能够做到这一点,我认为(或者至少是非常类似的东西):
callableStatement.setNull(index, Types.ARRAY)
但它会导致异常:
com.edb.util.PSQLException:错误:函数app_fetch_user_list_pkg.n_execute(字符变化,字符变化[],字符变化,布尔值,整数)不存在
有什么想法吗? (我们正在使用Postgresql / EDB以及Oracle ...到目前为止,我一直在试验Postgresql实例。)
答案 0 :(得分:2)
试试这个:
callableStatement.setString(index, "{}");
答案 1 :(得分:2)
好吧,我正在使用PreparedStatement.setNull(position, Types.ARRAY)
和9.4-1202-jdbc41 JDBC驱动程序,并且按预期工作。