虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > Oracle数据库 > 详解Oracle在out参数中访问光标

详解Oracle在out参数中访问光标
类别:Oracle数据库   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了详解Oracle在out参数中访问光标的相关资料,这里提供实例代码帮助大家学习理解这部分内容,希望能帮助到大家,需要的朋友可以参考下

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

一 概念

申明包结构
包头:负责申明
包体:负责实现 

二 需求

查询某个部门中所有员工的所有信息

三 包头

    CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor isref cursor;
    procedure queryEmplist(dno in number,emplist out empcursor);
    END MYPACKAGE;

四 包体

包体需要实现包头中声明的所有方法

    CREATE OR REPLACEPACKAGE BODY MYPACKAGE AS procedure queryEmplist(dno in number,emplist out empcursor) ASBEGIN--打开光标 open emplist forselect*from emp where deptno = dno;
    END queryEmplist;
    END MYPACKAGE;

五 在应用程序中访问包中的存储过程

1、代码

    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;
    * */@Testpublicvoid 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、运行结果

    7782 CLARK 6450.0 MANAGER7839 KING 10100.0 PRESIDENT7934 MILLER 3300.0 CLERK

以上就是Oracle在out参数中访问光标的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关热词搜索: Oracle在out参数中访问光标 Oracle在out参