如何将NULL(或空)数组传递给JDBC callableStatement(需要一个数组)

时间:2015-06-02 22:58:08

标签: arrays jdbc null callable-statement

我在将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实例。)

2 个答案:

答案 0 :(得分:2)

试试这个:

callableStatement.setString(index, "{}");

答案 1 :(得分:2)

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