如何插入Null值Oracle Types

时间:2015-12-15 07:29:48

标签: java oracle

这是我从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数组?

2 个答案:

答案 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