这是我从java调用过程的代码。
String DocumentSQL = "{call PKG_CREATE.PROC_CREATE_Claim(?,?)}";
callableStatement = connection.prepareCall(insertDocumentSQL);
callableStatement.setString(1,"Test");
callableStatement.setArray(2,claimArray);
这里我使用了Oracle type Array。当claimArray的价值工作正常时。有时它会是空的。所以我这样添加了
if(claimArray!=null){
callableStatement.setArray(2,claimArray);
}
else {
callableStatement.setArray(2,null);
or
callableStatement.setNull(2, OracleTypes.NULL);
}
显示错误。我如何设置Null数组?
答案 0 :(得分:1)
如果你想要一个空数组,你应该创建一个这样的void数组:
callableStatement.setArray(2,new typeArray[size]);
例如:
public static void main(String[] args) {
String[] arr = new String[4];
for (String i : arr) {
System.out.println(i);
}
}
输出:
null
null
null
null
答案 1 :(得分:0)
您需要对null case使用3参数setNull()函数:
void setNull(int parameterIndex,int sqlType,String sql_type_name)
除参数索引和SQL类型外还采用SQL类型名称 码。仅当SQL类型代码为REF,ARRAY时才使用此方法 或STRUCT。
https://docs.oracle.com/cd/F49540_01/DOC/java.815/a64685/oraext3.htm