这是我的 PLSQL 过程:
procedure ChangeRequest(RequestID number,
MethodID number,
FieldIDs dbms_sql.Number_Table,
FieldValues dbms_sql.Varchar2_Table,
SessionID IRBiS_Const.TSessionID default null)
我想在 Java 中使用 CallableStatement
设置 FieldIDs dbms_sql.Number_Table
参数,但我不知道如何操作。那个东西是什么?数组还是什么? CallableStatement 中是否有该类型的 setter 方法?
最佳答案
好吧,我做到了:
sessionFactory.getCurrentSession().doWork(new Work() {
public void execute(Connection con) throws SQLException {
OracleCallableStatement callableStatement = null;
try {
callableStatement = (OracleCallableStatement) con
.prepareCall("begin PREQUEST.ChangeRequest(?,?,?,?,?); end;");
callableStatement.setInt(1, request_id);
callableStatement.setInt(2, method_id);
callableStatement.setString(5, sessionId);
callableStatement.setPlsqlIndexTable(3, field_ids,
field_ids.length, field_ids.length,
OracleTypes.NUMBER, 0);
callableStatement.setPlsqlIndexTable(4, fieldValues,
field_ids.length, field_ids.length,
OracleTypes.VARCHAR, 0);
callableStatement.execute();
} finally {
if (callableStatement != null) {
callableStatement.close();
}
}
}
});
您应该注意的主要是prepareCall
方法:
callableStatement = (OracleCallableStatement) con
.prepareCall("begin PREQUEST.ChangeRequest(?,?,?,?,?); end;");
如你所见,里面是PLSQL语句。
关于java - 如何设置dbms_sql.Number_Table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137693/