一 概念
申明包结构
包头:负责申明
包体:负责实现
二 需求
查询某个部门中所有员工的所有信息
三 包头
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参数中访问光标 一 概念 申明包结构 包头:负责申明 包体:负责实现 二 需求 查询某个部门中所有员工的所有信息 三 包头 CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor isref ...
§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 在缓冲区驻留对象...
游标是 PL/SQL 中的一个重要概念,它允许开发者在程序中访问和操作数据库表中的数据。PL/SQL 中有两种类型的游标:隐性游标(Implicit Cursors)和显性游标(Explicit Cursors)。 隐性游标(Implicit Cursors) ...
§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 ...
**题目**: Linux中有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用()命令? - (1) Cat - (2) More - (3) Less - (4) Menu **正确答案**: (3) Less **知识点解析**: - *...
带参数的光标可以在定义时指定参数,使其更灵活: ```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(Java Database Connectivity)是Java中用来对关系数据库进行访问的一种标准API。 - JDBC定义了一组用于执行SQL语句的标准Java API接口,这些接口使得Java开发者可以使用标准的JDBC API来访问任何支持JDBC...
访问,存取 ['ækses]'(n.入口,使用权) algorithm n.算法 ['ælgәriðm] Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv.直接地,立即[di'rektli, dai'...