Oracle在out参数中访问光标
发布时间:2020-12-12 14:34:40 所属栏目:百科 来源:网络整理
导读:一 概念 申明包结构 包头:负责申明 包体:负责实现 二 需求 查询某个部门中所有员工的所有信息 三 包头 CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor is ref cursor ; procedure queryEmplist ( dno in number , emplist out empcursor ); END M
一 概念 申明包结构 包头:负责申明 包体:负责实现 二 需求 查询某个部门中所有员工的所有信息 三 包头
PACKAGE BODY MYPACKAGE AS emplist out empcursor) AS BEGIN --打开光标 open emplist forselect*from emp where deptno = dno; END queryEmplist;
END MYPACKAGE;
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); }
} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |