详解Oracle在out参数中访问光标
一 概念
申明包结构
包头:负责申明
包体:负责实现
二 需求
查询某个部门中所有员工的所有信息
三 包头
1
2
3
4
5
|
CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor isref cursor ; procedure queryEmplist(dno in number,emplist out empcursor); END MYPACKAGE; |
四 包体
包体需要实现包头中声明的所有方法
1
2
3
4
5
6
7
8
|
CREATE OR REPLACE PACKAGE BODY MYPACKAGE AS procedure queryEmplist(dno in number,emplist out empcursor) AS BEGIN --打开光标 open emplist forselect* from emp where deptno = dno; END queryEmplist; END MYPACKAGE; |
五 在应用程序中访问包中的存储过程
1、代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package demo.oracle; import java.sql.CallableStatement; import java.sql. Connection ; import java.sql.ResultSet; import oracle.jdbc.OracleCallableStatement; import oracle.jdbc.OracleTypes; import org.junit.Test; import demo.utils.JDBCUtils; publicclassTestCursor{ /* CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor is ref cursor ; procedure queryEmplist(dno in number,emplist out empcursor); END MYPACKAGE; * */ @Test publicvoid testCursor(){ String sql= "{call MYPACKAGE.queryEmplist(?,?)}" ; Connection conn = null ; CallableStatement call = null ; ResultSet rs = null ; try{ //获取数据库的连接 conn =JDBCUtils.getConnection(); //创建statement call = conn.prepareCall(sql); //对于 in 参数,赋值 call.setInt(1,10); //对于 out 参数,申明 call.registerOutParameter(2,OracleTypes. CURSOR ); //执行调用 call. execute (); //取出该部门中所有员工的信息 rs =((OracleCallableStatement)call).getCursor(2); while(rs. next ()){ //取出该员工的员工号,姓名,薪水和职位 int empno = rs.getInt( "empno" ); String name =rs.getString( "ename" ); double salay = rs.getDouble( "sal" ); String job = rs.getString( "empjob" ); System. out .println(empno+ "\t" + name + "\t" +salay+ "\t" +job); } }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(conn, call, rs); } } } |
2、运行结果
1
2
3
|
7782 CLARK 6450.0 MANAGER 7839 KING 10100.0 PRESIDENT 7934 MILLER 3300.0 CLERK |
以上就是Oracle在out参数中访问光标的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://cakin24.iteye.com/blog/2389812