• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解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 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、代码

    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、运行结果

    7782  CLARK  6450.0  MANAGER
    7839  KING  10100.0  PRESIDENT
    7934  MILLER  3300.0  CLERK

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

    您可能感兴趣的文章:
    • Oracle的out参数实例详解
    • Oracle中serveroutput参数一次设置永久保存方法
    • Oracle 子程序参数模式,IN,OUT,NOCOPY
    上一篇:Oracle的out参数实例详解
    下一篇:详解Oracle调试存储过程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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