从Java中的存储过程获取结果
我最难从java运行时环境调用Oracle存储过程。我正在调用的存储过程有两个参数1 in和1 out。下面是我如何调用存储过程。。。如何从Oracle参考光标获取结果集从Java中的存储过程获取结果,java,oracle11g,Java,Oracle11g,我最难从java运行时环境调用Oracle存储过程。我正在调用的存储过程有两个参数1 in和1 out。下面是我如何调用存储过程。。。如何从Oracle参考光标获取结果集 ds = (DataSource)initialContext.lookup("JDBC/EPCD13DB"); conn = ds.getConnection(); callableStatement = conn.prepare
ds = (DataSource)initialContext.lookup("JDBC/EPCD13DB");
conn = ds.getConnection();
callableStatement = conn.prepareCall(storedProcCall);
callableStatement.setString(1, input1);
callableStatement.registerOutParameter(2, OracleTypes.CURSOR);
callableStatement.execute();//(ResultSet) callableStatement.getObject(1);
ResultSet rs = callableStatement.getResultSet();
while(rs.next()){
Provider tempProv = new Provider();
tempProv.setResourceId(rs.getLong("res_id"));
tempProv.setFirstName(rs.getString("First_Name"));
tempProv.setLastName(rs.getString("Last_Name"));
tempProv.setMiddleName(rs.getString("Middle_Name"));
ObjList.add(tempProv);
}
rs.close();
您应该能够通过以下方式检索
结果集
:
ResultSet rSet = (ResultSet)callableStatement.getObject(2);
这对你有帮助吗?在查询结果集之前,似乎必须调用getObject并将其强制转换到结果集中
信用证::我相信它只返回一个输出(
oracle cursor
)
然后迭代游标结果集以查找其中的记录:
while(rs.next()){
Provider tempProv = new Provider();
tempProv.setResourceId(rs.getLong("res_id"));
tempProv.setFirstName(rs.getString("First_Name"));
tempProv.setLastName(rs.getString("Last_Name"));
tempProv.setMiddleName(rs.getString("Middle_Name"));
ObjList.add(tempProv);
}
在spring框架中,可以很容易地获取数据库游标结果。它有内置的类,如maprow、storedprocedure,以实现此目的。PFB链接
为什么选择getObject(2)?我正在尝试getObject(1)。这是在请求第二个参数吗?@DmainEvent,因为OUT参数位于第二个位置:
registerOutParameter(2,OracleTypes.CURSOR)
while(rs.next()){
Provider tempProv = new Provider();
tempProv.setResourceId(rs.getLong("res_id"));
tempProv.setFirstName(rs.getString("First_Name"));
tempProv.setLastName(rs.getString("Last_Name"));
tempProv.setMiddleName(rs.getString("Middle_Name"));
ObjList.add(tempProv);
}