存储过程的输出参数为游标,PL/SQL中如何调用 Java代码如何调用
2016-07-07 00:00
971 查看
--查询某个部门中所有员工的所有信息
--PL/SQL调用
--java调用
--包头 CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor is ref cursor; PROCEDURE queryEmpList(dno IN NUMBER ,empList OUT empcursor); END MYPACKAGE; --包体 CREATE OR REPLACE PACKAGE BODY MYPACKAGE AS PROCEDURE queryEmpList(dno IN NUMBER , empList OUT empcursor) AS BEGIN OPEN empList FOR SELECT * FROM emp WHERE deptno=dno; END queryEmpList; END MYPACKAGE;
--PL/SQL调用
declare type type_cur_data is ref cursor return emp%rowtype; v_cur_data type_cur_data; v_tab_data emp%rowtype; begin MYPACKAGE.queryEmpList(10, v_cur_data); while (1=1) loop fetch v_cur_data into v_tab_data; exit when v_cur_data%notfound; dbms_output.put_line(v_tab_data.deptno || v_tab_data.ename); end loop; end;
/* CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor is ref cursor; procedure queryEmpList(dno in number,empList out empcursor); END MYPACKAGE; */
--java调用
@Test public void testCursor(){ String sql = "{call MYPACKAGE.queryEmpList(?,?)}"; Connection conn = null; CallableStatement call = null; ResultSet rs = null; try { conn = JDBCUtils.getConnection(); call = conn.prepareCall(sql); // 对于 in 参数,赋值 call.setInt(1, 20); // 对于 out 参数,申明 call.registerOutParameter(2, OracleTypes.CURSOR); // 执行 call.execute(); // 取出结果 rs = ((OracleCallableStatement)call).getCursor(2); while(rs.next()){ String name = rs.getString("ename"); double sal = rs.getDouble("sal"); String job = rs.getString("empjob"); System.out.println(name+"\t"+sal+"\t"+job); } } catch (Exception e) { e.printStackTrace(); }finally{ JDBCUtils.release(conn, call, rs); } } }
相关文章推荐
- MySQL存储过程
- ASP程序与SQL存储过程结合使用详解
- Oracle存储过程之数据库中获取数据实例
- MSSQL自身存储过程的一个注入漏洞
- SQL SERVER调用存储过程小结
- SQLServer 2005 列所有存储过程的语句
- SQLServer 2008中的代码安全(一) 存储过程加密与安全上下文
- SQL2005重新生成索引的的存储过程 sp_rebuild
- SQL Server存储过程的基础说明
- MS SQL Server游标(CURSOR)的学习使用
- sqlserver存储过程语法详解
- MSSQL事务的存储过程
- SQL Server 存储过程解析
- sql server动态存储过程按日期保存数据示例
- SQL Server中数据行批量插入脚本的存储实现
- SQLserver 数据库危险存储过程删除与恢复方法
- SQL Server存储过程中使用表值作为输入参数示例
- SQL Server游标的使用/关闭/释放/优化小结
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- MySQL DDL操作--------存储过程最佳实战