CURSOR 游标名 IS 操作语句; --1、定义游标

OPEN 游标名; --2、打开游标
LOOP
FETCH 游标名 INTO 变量名; --3.读取游标
EXIT WHEN 游标名%NOTFOUND;
处理语句;
END LOOP;
CLOSE 游标名;--4.关闭游标


隐式游标的属性 返回值类型   意    义
SQL%ROWCOUNT    整型  代表DML语句成功执行的数据行数
SQL%FOUND   布尔型 值为TRUE代表插入、删除、更新或单行查询操作成功
SQL%NOTFOUND    布尔型 与SQL%FOUND属性返回值相反
SQL%ISOPEN  布尔型 DML执行过程中为真,结束后为假

  1、声明游标:

cursor curname is  select.......

2、打开游标:

open curname;

3、提取数据:循环提取数据:游标中的谓词 curname%found 、curname%notfound。

当结果集中的数据没有提取完时 %found的值true,否则是false.

%notfound与%found 相反。通过两个谓词可以控制循环

fetch  curname  into .......

4、关闭游标

close curname;

②遍历循环游标

⑴For 循环游标

循环游标隐式打开游标,自动滚动获取一条记录,并自动创建临时记录类型变量存储记录。处理完后自动关闭游标。

For 变量名 In 游标名

Loop

数据处理语句;

End Loop;

⑵Loop循环游标

。。。

Loop

Fatch 游标名InTo 临时记录或属性类型变量;

Exit When 游标名%NotFound;

End Loop;

例子1:/* conn scott/tiger */DeclareCursor myCur is select empno,ename,sal from emp;vna varchar2(10);vno number(4);vsal number(7,2);Beginopen myCur;fetch myCur into vno,vna,vsal;dbms_output.put_line(vno||'    '||vna||'    '||vsal);close myCur;End;/例子2:使用loop遍历游标。DeclareCursor myCur is select ename,job,sal,empno from emp;varE myCur%rowType;Beginif myCur%isopen = false thenopen myCur;dbms_output.put_line('Opening...');end if;loopfetch myCur into varE;exit when myCur%notfound;dbms_output.put_line(myCur%rowCount||'    '||vare.empno||'    '||vare.ename||'    '||vare.sal);end loop;if myCur%isopen thenClose myCur;dbms_output.put_line('Closing...');end if;End;/例子3:使用For循环遍历游标,/* conn scott/tiger */DeclareCursor myCur is select * from emp;Beginfor varA in myCurloopdbms_output.put_line(myCur%rowCount||'    '||varA.empno||'    '||varA.ename||'  '||varA.sal);end loop;End;/

  

declare --类型定义cursor c_jobisselect empno,ename,job,salfrom empwhere job='MANAGER';--定义一个游标变量c_row c_job%rowtype;
beginopen c_job;loop--提取一行数据到c_rowfetch c_job into c_row;--判读是否提取到值,没取到值就退出--取到值c_job%notfound 是false --取不到值c_job%notfound 是trueexit when c_job%notfound;dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);end loop;--关闭游标close c_job;
end;
--5:向游标传递一个工种,显示此工种的所有雇员的所有信息(使用参数游标)
declare cursorc_job(p_job nvarchar2)is select * from emp where JOB=p_job;r_job emp%rowtype;
begin for r_job in c_job('CLERK') loopdbms_output.put_line('员工号'||r_job.EMPNO||' '||'员工姓名'||r_job.ENAME);end loop;
end;
SELECT * FROM EMP

转载于:https://www.cnblogs.com/jeffjoy/p/9209598.html

Oracle基础学习(四) 游标相关推荐

  1. Oracle基础学习四之表的定义及脚本编写一

    表的创建及管理    对于数据库而言实际上每一张表都表示的是一个数据库对象,而在数据库对象值的就是DDL定义的所有操作,例如:表.视图.序列.约束等,都属于对象的操作,所以表的建立就是对象的建立,而对 ...

  2. Oracle登陆SQL Plus,Oracle基础学习登陆SQLPLUS(一)

    或 system/(password) 连接到本地的最高帐号 Sql>help index Enter Help [topic] for help. Sql>show all 显示当前SQ ...

  3. Oracle基础学习之三—查询

    一. 简单查询 简单查询 SELECT 字段[,字段] FROM 表; #例子: SELECT ename, empno FROM emp; 字段和表起别名 字段 [as] 别名:表名 别名 注:别名 ...

  4. JavaSE基础学习(四)—Java核心类库(下)

    目录 思维导图快速预览全文内容 一.异常机制(重点) 1.基本概念 2.异常分类 3.异常的避免 4.异常的捕获 5.异常的抛出 6.自定义异常 二.File类(重点) 1. 基本概念 2.常用方法 ...

  5. oracle 授权 传递,Oracle基础学习4--Oracle权限传递

    下面将用一个实例来讲解: 首先用oracle系统用户(sysdba身份)连接到Oracle 然后创建两个用户"lisi"和"zhangsan" 然后为lisi授 ...

  6. ORACLE基础学习-RMAN应用-控制文件恢复

    在NOCATALOG模式下,RMAN创建的备份信息都将保存在目标数据库的控制文件中,所以一旦控制文件丢失,不仅目标数据库崩溃,连RMAN的备份信息也尽数丢失,这种情况下,如果您有控制文件备份,那还有救 ...

  7. oracle基础授权,Oracle基础学习3--Oracle创建用户并授权

    Oracle服务器端的操作一般如下: 1)安装Oracle服务器软件 2)       创建数据库(安装时自动创建) 3)       配置监听(安装时自动配置) 4)       启动Oracle实 ...

  8. Oracle基础学习

    Oracle01 基本查询 1.查询出所有emp中的信息,并用中文进行字段重命名 select empno as "员工号",ename "员工姓名",job ...

  9. python基础学习四:合并Excel表格小程序

    import xlrd import xlsxwriter import os #在原有的基础上,对程序进行完善:因为大多数合并的表格,他们的格式都是一样的,就拿我自己来说, #把很多同学填写的信息进 ...

  10. ORACLE基础学习-RMAN应用之(归档模式无备份,丢失数据文件的恢复)

    二.归档模式无备份,丢失数据文件的恢复: 首先要意识到,这种恢复是有条件的,只有在某些特定条件下,才有可能在没有备份的情况下恢复丢失的数据文件. 同时又需意识到不是所有丢失的文件都是可以被成功恢复的. ...

最新文章

  1. 列名无效怎么解决_电脑win键失效怎么办? 键盘win键无效的解决办法
  2. 7-4 螺旋方阵 (20 分)
  3. 虎记:强大的nth-child(n)伪类选择器玩法
  4. 长淋巴结注意事项问答
  5. android+ndk+r9+x64下载,Win7 64位中文旗舰版上Cocos2d-x 3.0的Android开发调试环境架设
  6. ios 去掉cell最后一条分割线
  7. 高净值人群依靠什么可以挣那么多钱?
  8. SEO的艺术(原书第2版)
  9. Win10安装乌班图18双系统
  10. postman——集合——执行集合——脚本的执行顺序——验证
  11. 基于vue的 表单设计器(拖拽生成表单)
  12. 【Python】Matplotlib绘图02_pyplot图表美化
  13. CENTOS上的网络安全工具(十二)走向Hadoop(4) Hadoop 集群搭建
  14. 教你用 Python 修改微信(支付宝)运动步数,轻松升到 TOP1
  15. Qt中实现获取中文首字母(GB2312 和 unicode以及调用Unihan实现全汉字拼音转换,支持多音字和生僻字等)和中英文数字排序功能
  16. [CVPR2021-oral]Learning to Aggregate and Personalize 3D Face from In-the-Wild Photo Collection
  17. 巴菲特卸任后盖茨梅琳达与四位新理事共管盖茨基金会;Club Med中国第三家冰雪度假村开业 | 美通社头条...
  18. MMR(最大边界相关算法)
  19. 理解人工智能算法,初中数学知识就够了
  20. 欢迎使用CSDN水电费叠伤

热门文章

  1. PAT(乙级)1016
  2. 动态规划计算字符相似度感觉棒棒哒
  3. Openssl crl2pkcs7命令
  4. C# 客服端上传文件与服务器器端接收 (简单代码)
  5. Note for Multi Agent Teamwork—A Survey
  6. 新手必学的Mac使用技巧
  7. ubuntu 1804.1 升级失败:Hash Sum mismatch
  8. 用 CrossOver 安装的 Windows 软件在哪
  9. 装机必备:借用IDM实现百度云高速下载
  10. Shell命令-搜索文件或目录之which、find