`
cakin24
  • 浏览: 1397171 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Oracle在out参数中访问光标

阅读更多

一 概念

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

相关推荐

    详解Oracle在out参数中访问光标

    详解Oracle在out参数中访问光标 一 概念 申明包结构 包头:负责申明 包体:负责实现  二 需求 查询某个部门中所有员工的所有信息 三 包头 CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor isref ...

    ORACLE9i_优化设计与系统调整

    §3.2.7 不能在参数文件中指定的参数 70 §3.2.8 当参数指定错误时怎么办? 70 §3.3 参数内容说明 70 §3.4 DBA常用参数说明 71 §3.4.1 跟踪文件路径(BACKGROUND_DUMP_DEST) 71 §3.4.2 在缓冲区驻留对象...

    Oracle PL/SQL

    游标是 PL/SQL 中的一个重要概念,它允许开发者在程序中访问和操作数据库表中的数据。PL/SQL 中有两种类型的游标:隐性游标(Implicit Cursors)和显性游标(Explicit Cursors)。 隐性游标(Implicit Cursors) ...

    Oracle8i_9i数据库基础

    §10.1.3 在查询中只返回满足条件的部分记录 214 §10.1.4 快速大量删除数据Truncate 215 §10.1.5 Rowid的使用 215 §10.1.6 在查询中不让记录被更新 217 §10.1.7 EXCEPTIONS(违反完整性)问题 217 §10.1.8 Not ...

    9i优化设计与系统调整

    - **3.2.7 不能在参数文件中指定的参数**:某些参数只能在数据库运行时通过命令行等方式设置。 - **3.2.8 当参数指定错误时怎么办?**:提供解决因参数设置不当导致的问题的方法。 - **3.3 参数内容说明**:...

    招商证券笔试题测验-大数据.docx

    **题目**: Linux中有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用()命令? - (1) Cat - (2) More - (3) Less - (4) Menu **正确答案**: (3) Less **知识点解析**: - *...

    PLSQL教程.doc

    带参数的光标可以在定义时指定参数,使其更灵活: ```plsql DECLARE CURSOR c1 (v_deptno NUMBER) IS SELECT employee_id, first_name FROM employees WHERE department_id = v_deptno; emp_rec c1%ROWTYPE; ...

    JDBC视频教程(15天)

    - JDBC(Java Database Connectivity)是Java中用来对关系数据库进行访问的一种标准API。 - JDBC定义了一组用于执行SQL语句的标准Java API接口,这些接口使得Java开发者可以使用标准的JDBC API来访问任何支持JDBC...

    整理后java开发全套达内学习笔记(含练习)

    访问,存取 ['ækses]'(n.入口,使用权) algorithm n.算法 ['ælgәriðm] Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv.直接地,立即[di'rektli, dai'...

Global site tag (gtag.js) - Google Analytics