【发布时间】:2022-08-24 23:02:33
【问题描述】:
我想多次使用过程从 oracle 数据库中获取许多表选择
我的 Oracle 程序
PROCEDURE getInfo(
Status IN VARCHAR2,
P_CUR OUT REFCURSOR)
AS
BEGIN
OPEN P_CUR FOR
SELECT *
FROM TABLE
WHERE TABLE.STATUS = Status
END;
这是我的Java调用程序。它不起作用,我无法为 PreparedStatement 设置 registerOutParameter 来获取光标数据。
PreparedStatement pstmt = null;
pstmt = cnn.prepareCall(\"{call \" + schemaName + \".LOC_EXCHANGE.getInfo(?,?)}\");
for (Entity entity : ListEntity) {
int i = 1;
pstmt.setString(i++, entity.getTxnId());
pstmt.registerOutParameter(i, OracleTypes.CURSOR);
pstmt.addBatch();
}
pstmt.executeBatch();
cnn.commit();
rs = (ResultSet) pstmt.getObject(i);
-
你得到什么错误?顺便说一句,当您使用批处理执行时,如果您得到的光标不是上次执行的光标(如果有的话),我会感到惊讶。这不是批处理执行的目的。虽然我可能错了,因为我不经常与 Oracle 合作。
-
另外
registerOutParameter在PreparedStatement中没有定义,需要使用CallableStatement(prepareCall返回的实际类型)
标签: java oracle stored-procedures jdbc