oracle游标的使用
来源:互联网 发布:java服务器路径怎么写 编辑:程序博客网 时间:2024/06/10 19:47
1.游标的定义
游标(Cursor),也称之为光标,从字面意思理解就是游动的光标。
游标是映射在结果集中一行数据上的位置实体。
游标是从表中检索出结果集,并从中每次指向一条记录进行交互的机制。2. 游标的声明
CURSOR 游标名 [ (参数名 数据类型[,参数名 数据类型]...)]
IS SELECT 语句;
【示例】
无参游标:
cursor c_emp is select ename from emp;
有参游标:
cursorc_emp(v_deptno emp.deptno%TYPE) is select ename from emp where deptno=v_deptno;3.游标的属性
游标的属性
返回值类型
说明
%ROWCOUNT
整型
获得FETCH语句返回的数据行数
%FOUND
布尔型
最近的FETCH语句返回一行数据则为真,否则为假
%NOTFOUND
布尔型
与%FOUND属性返回值相反
%ISOPEN
布尔型
游标已经打开时值为真,否则为假
4.游标的使用案列
--使用游标查询emp表中所有员工的姓名和工资,并将其依次打印出来。
DECLARE
--声明一个游标
CURSOR C_EMPISSELECT *FROM EMP;
--记录型变量
v_emp emp%ROWTYPE;
BEGIN
--打开游标,执行查询
OPEN C_EMP;
--使用游标,循环取值
LOOP
--获取游标的值放入变量的时候,必须要into前后要对应(数量和类型)
FETCH C_EMPINTO v_emp;
EXITWHEN C_EMP%NOTFOUND;
--输出打印
DBMS_OUTPUT.PUT_LINE('员工的姓名:' || v_emp.ename ||',员工的工资' || v_emp.sal);
ENDLOOP;
CLOSE c_emp ;--关闭游标,释放资源
END;
5.SCOTT表使用游标案列,上面有讲解了下面的就不写解释了。
(1)例题:显示30部门的所有员工的编号及姓名,要求格式是 编号--姓名
DECLAREerow emp%ROWTYPE;CURSOR cur_1 IS SELECT * FROM emp WHERE deptno=30;BEGIN OPEN cur_1; LOOP FETCH cur_1 INTO erow; EXIT WHEN cur_1%NOTFOUND; dbms_output.put_line(erow.empno||'-----'||erow.ename); END LOOP; CLOSE cur_1;END;(2)例题:显示30部门的所有员工的编号及姓名,要求格式是 编号--姓名(部门编号手动输入)
DECLAREerow emp%ROWTYPE;CURSOR cur_2 IS SELECT * FROM emp WHERE deptno=&部门编号;BEGIN OPEN cur_2; LOOP FETCH cur_2 INTO erow; EXIT WHEN cur_2%NOTFOUND; dbms_output.put_line(erow.empno||'-----------'||erow.ename); END LOOP; CLOSE cur_2;END;(3)例题查询10号部门的员工的姓名和薪资
DECLARECURSOR c_1 (v_deptno emp.deptno%TYPE) IS SELECT ename,sal FROM emp WHERE deptno=v_deptno;v_ename emp.ename%TYPE;v_sal emp.sal%TYPE;BEGIN OPEN c_1(10); LOOP FETCH c_1 INTO v_ename,v_sal; EXIT WHEN c_1%NOTFOUND; dbms_output.put_line(v_ename||'---'||v_sal); END LOOP; CLOSE c_1;END;
DECLARE CURSOR c_2(v_deptno emp.deptno%TYPE) IS SELECT ename,sal FROM emp WHERE deptno = v_deptno;v_ename emp.ename%TYPE;v_sal emp.sal%TYPE;vv_deptno emp.deptno%TYPE;BEGIN vv_deptno :=&部门编号; OPEN c_2(vv_deptno); LOOP FETCH c_2 INTO v_ename,v_sal; EXIT WHEN c_2%NOTFOUND; dbms_output.put_line(v_ename||'--'||v_sal); END LOOP; CLOSE c_2; END;
- ORACLE 游标的使用
- Oracle游标的使用
- oracle游标的使用
- oracle游标的使用
- oracle 游标的使用
- oracle游标的使用
- oracle游标的使用
- Oracle的游标使用
- Oracle 游标的使用
- Oracle游标的使用
- oracle 游标的使用
- oracle 游标的使用
- oracle游标的使用
- Oracle游标的使用
- oracle游标的使用
- oracle游标的使用
- oracle游标的使用
- oracle游标的使用
- 杨辉三角模板
- Android日志系统第三方库------Logger 源码分析
- oracle-plsql练习
- 使用HttpUrlConnection的GET方式从网上下载数据
- bzoj3714 [PA2014]Kuglarz
- oracle游标的使用
- 八皇后-剪枝函数
- 【js基础】javascript中的apply() call() bind() 方法是javascript专业人员的基础[译]
- 《数据库系统概念(第六版)》读书笔记——第6章:高级SQL
- 安装HP LaserJet 1320n打印机驱动
- 字符串匹配---KMP
- 2017搜狗第一道编程题,构建数列
- codevs 1001 舒适的路线 玄学方法 解题报告
- 剑指offer(24)—二叉树中和为某一值的路径