结论:存储过程完全可以取代自定义存储函数
OracleCallableStatement转变类型
package demo.oracle;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import org.junit.Test;
import demo.utils.JDBCUtils;
import oracle.jdbc.internal.OracleCallableStatement;
import oracle.jdbc.internal.OracleTypes;
public class TestCursor {
@Test
public void testCursor() {
String sql = "{call package1.emplist(?,?)}";
Connection conn = null;
CallableStatement call = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
call = conn.prepareCall(sql);
call.setInt(1,10);
call.registerOutParameter(2, OracleTypes.CURSOR);
call.execute();
rs = ((OracleCallableStatement)call).getCursor(2);
while(rs.next()) {
double salary = rs.getDouble("sal");
System.out.println(salary);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.release(conn, call, null);
}
}
}
输入参数--赋值
setInt(1,10);
输出参数--声明
registerOutParameter(2,变量的类型)
然后再调用过程
execute()
取出调用过程后获取到所有结果集
while(rs.next()){
}
根据需要取出结果集中的某个字段。
rs.getInt("empno")
输入参数--赋值
输出参数--声明
然后再调用过程
取出调用过程后获取到所有结果集
根据需要取出结果集中的某个字段。