当前位置:   article > 正文

pl/sql 编写 Oracle存储过程 调用存储过程返回集合_存储过程查询回来的是一个集合怎么写

存储过程查询回来的是一个集合怎么写


先写Oracle的存储过程

  1. --返回一个集合(多行数据)
  2. --1、先建一个包,在该包中定义了一个类型 test_cursor ,是一个游标
  3. create or replace package testPackage as
  4. type test_cursor is ref cursor;
  5. end testPackage;
  6. /
  7. --2、建立存储过程
  8. create or replace procedure sp_pro13(spNo in number,p_cursor out testPackage.test_cursor) is
  9. v_sql varchar2(500);
  10. begin
  11. v_sql:='select * from emp where deptno='||spNo;
  12. open p_cursor for v_sql;
  13. end;
  14. /

java中调用创建的存储过程

  1. @Test
  2. public void testWithReturn_manyRow() {
  3. try {
  4. Class.forName("oracle.jdbc.driver.OracleDriver");
  5. Connection conn = DriverManager.getConnection(
  6. "jdbc:oracle:thin:@192.168.202.129:1521:orcl", "scott",
  7. "tiger");
  8. CallableStatement cs = conn.prepareCall("{call sp_pro13(?,?)}");
  9. cs.setInt(1, 10);
  10. cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
  11. cs.execute();
  12. // 得到结果集
  13. ResultSet rs = (ResultSet) cs.getObject(2);
  14. while (rs.next()) {
  15. System.out.println(rs.getInt("deptno") + " --- "
  16. + rs.getInt("empno") + " --- " + rs.getString("ename")
  17. + " --- " + rs.getString("job") + " --- "
  18. + rs.getInt("sal"));
  19. }
  20. cs.close();
  21. conn.close();
  22. } catch (ClassNotFoundException e) {
  23. e.printStackTrace();
  24. } catch (SQLException e) {
  25. e.printStackTrace();
  26. }
  27. }

结果:



本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/792994
推荐阅读
相关标签
  

闽ICP备14008679号