我正在使用ojdbc6 jar,我想在PreparedStatement中使用In子句。
我使用了连接对象的createArrayOf(String,ArrayOfString)
方法。
我收到错误为“不支持的功能”
我已经检查了此方法的实现中的PhysicalConnection类是
public Array createArrayOf(String s, Object aobj[]) throws SQLException {
SQLException sqlexception = DatabaseError.createUnsupportedFeatureSqlException();
sqlexception.fillInStackTrace();
throw sqlexception;
}
我已经检查了ojdbc14.jar这个方法。在该.jar文件中,此方法未定义。
请帮帮我,我必须使用哪个罐子?我想在PreparedStatement中实现In子句功能。
答案 0 :(得分:0)
所以你想做点什么......
SELECT * FROM TAB WHERE ID IN ?
我过去遇到过类似的问题,并尝试过使用JDBC和Oracle的各种技巧(例如用户定义的类型等),但这就是我们最终的结果......
创建一个包含单个ID列的global temporary table(作用于会话 - ON COMMIT DELETE ROWS)
开始交易
使用批处理语句将所需的所有ID插入临时表
加入此表格以获取结果,例如......
SELECT * FROM TAB T INNER JOIN MyTempTable X ON T.ID = X.ID
提交时,临时表被截断
如果您需要在同一个事务中执行其中的几个操作,请务必先从临时表中删除。
(另外,我们在驱动程序版本和setArray等问题上遇到了很多问题,所以我们确定了这个问题)