使用JDBC调用绑定函数

时间:2017-02-14 15:31:38

标签: java oracle jdbc

我有一个使用参数绑定的jdbc preparedstatement

例如:

insert into CLOB_COLUMN values (?)

我想使用empty_clob()并将其绑定到参数,然后我可以执行类似

的操作
if(foo){
    statement.setClob("something");
else{
    statement.setfunction("empty_clob()")
}

JDBC是否支持此功能?我觉得这是一个常见的用例,我错过了一些东西。我没有看到将函数绑定到预准备语句中的参数的方法,并且在文档中找不到任何内容,在尝试作为字符串时,它只是添加字符串" empty_clob()"到行中的列。

作为旁注(针对特定用例而非问题,我知道statement.setClob(Clob.getEmptyClob())存在,这是否实际激活了oracle中的工作表下的empty_clob()?或者它是否创建了一个空的clob对象,它在表空间中拥有它自己的位置,而不是指向函数中使用的泛型?

1 个答案:

答案 0 :(得分:2)

不,JDBC不支持这样的东西。您只能使用绑定参数设置值,没有别的。

至于你的第二个问题:没有java.sql.Clob.getEmptyClob(),所以你可能正在讨论Oracle特定扩展oracle.sql.CLOB.getEmptyCLOB(),而其文档只说:

  

返回一个空吊球。使用空lob来初始化LOB列/属性。注意:无法读取或写入空吊球

请注意,此方法已弃用。