【发布时间】:2015-06-02 22:58:08
【问题描述】:
我在将 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 实例)。
【问题讨论】:
-
您是否尝试过使用允许您指定目标类型的
setObject方法之一(即setObject(int parameterIndex, Object x, int targetSqlType)或setObject(int parameterIndex, Object x, SQLType targetSqlType) -
是的...运气不好。我还尝试了
setBinaryStream()并得到了奖励异常消息:“此功能尚未实现。”我真的不喜欢这个司机。
标签: arrays jdbc null callable-statement