Oracle 游标操作
2016-08-05 14:17
441 查看
游标
sql语言分为六种,其中CCL:Cursor Control Language游标控制语言简单定义:游标是指向结果集的指针,类似迭代器Iterator
一开始指向结果集的第一条记录之前的记录,每fetch一次往下移动一条记录,返回指针指向的当前记录。
游标的操作:
(1) 声明游标—–>cursor c is selsect * from emp
(2) 开启游标——>open c;
(3) 迭代抓取游标——>用循环遍历
(4) 最后关闭游标——>close c;
DECLARE --1,声明游标 CURSOR c IS SELECT * FROM emp; v_emprow emp%ROWTYPE; BEGIN --2,开启游标 OPEN c; --3,循环抓取游标 LOOP FETCH c INTO v_emprow; EXIT WHEN(c%Notfound); --必须要写到exit when 后面 dbms_output.put_line(v_emprow.ename); END LOOP; --4,关闭游标 CLOSE c; END;
用whil循环遍历
DECLARE --1,声明游标 CURSOR c IS SELECT * FROM emp; v_emprow emp%ROWTYPE; BEGIN --2,开启游标 OPEN c; --3,循环抓取游标 FETCH c INTO v_emprow; while(c%FOUND) LOOP dbms_output.put_line(v_emprow.ename); FETCH c INTO v_emprow; END LOOP; --4,关闭游标 CLOSE c; END;
使用for循环遍历,for循环会自动开启游标,自动迭代抓取游标,自动关闭游标。
DECLARE --1,声明游标 CURSOR c IS SELECT * FROM emp; BEGIN FOR v_emprow IN c LOOP dbms_output.put_line(v_emprow.ename); END LOOP; END;
带参数的游标
declare -- 查询部门编号为 10的, 工种为 'CLERK'的职员的姓名 cursor c(v_deptno emp.deptno%type,v_job emp.job%type) is select * from emp where deptno=v_deptno and job=v_job; --v_emp emp%rowtype; begin for v_emp in c(10,'CLERK') loop dbms_output.put_line(v_emp.ename); end loop; end;
可更新的游标 …………for update ……………current of………………..
DECLARE --1,声明游标 CURSOR c IS SELECT * FROM emp1 FOR UPDATE; BEGIN FOR v_emprow IN c LOOP update emp1 set sal=sal*2 where current of c; END LOOP; END;
隐式游标
SQL%rowcount 返回最后一条sql语句影响的行数,查看操作是否成功,
DECLARE --1,声明游标 v_count NUMBER(2); CURSOR c IS SELECT * FROM emp1 FOR UPDATE; BEGIN FOR v_emprow IN c LOOP update emp1 set sal=sal*2 where current of c; END LOOP; --dbms_output.put_line(''||ROWCOUNT); v_count:=SQL%ROWCOUNT; dbms_output.put_line(v_count); END;
相关文章推荐
- SQL语句优化技巧--Oracle
- oracle 添加删除非空约束
- oracle 相关sql杂
- asp.net三层架构连接Oracle 11g详解
- ORACLE 创建与使用视图
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
- Oracle学习笔记——点滴汇总
- Oracle(入门四)
- Oracle
- Navicat Premium链接到Oracle,,,我的解决路线
- 关于Oracle DataGuard 同步 还是 异步 的问题
- MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
- Oracle删除表锁
- oracle学习小结
- Oracle怎么安装
- Oracle 性能优化的基本方法概述
- Oracle备份恢复-数据泵
- Oracle备份恢复-RMAN备份
- oracle物理DG管理-redo数据传输,应用与三种模式
- centos6.6_X64安装oracle10G