Oracle 中游标使用实例

一、游标简介:

游标是PL&SQL中的一种控制结构。可以分为显式游标和隐式游标。pl&sql会为每一条select语句创建隐式游标。但是当我们需要处理多条数据时,我们就需要创建显式游标。注意:游标不是模式对象。

二、游标的几种常见属性:

1、%FOUND

--判断游标中是否还有数据,若有,返回true,否则,返回false。

2、%NOTFOUND

--与%FOUND 相反

3、%ISOPEN

--判断游标是否为打开状态

4、%ROWCOUNT

--记录已从游标中取出的记录数

三、游标应用实例:

1、%FOUND属性的使用

DECLARE

CURSOR mycur IS

SELECT * FROM student;

myrecord student%ROWTYPE;

BEGIN

OPEN mycur;

FETCH mycur INTO myrecord;

WHILE mycur%FOUND LOOP

DBMS_OUTPUT.PUT_LINE(myrecord.stuno||','||myrecord.stuname);

FETCH mycur INTO myrecord;

END LOOP;

CLOSE mycur;

END;

2、%NOTFOUND属性的使用:

DECLARE

CURSOR cur_para(id varchar2) IS

SELECT stuname FROM student WHERE stuno=111;

t_name student.stuname%TYPE;

BEGIN

OPEN cur_para(111);

LOOP

FETCH cur_para INTO t_name;

EXIT WHEN cur_para%NOTFOUND;

DBMS_OUTPUT.PUT_LINE(t_name);

END LOOP;

CLOSE cur_para;

END;

3、for循环中游标的特殊使用:

SQL> DECLARE

2 CURSOR cur_para(id varchar2) IS

3 SELECT stuname FROM student WHERE stuno=id;

4 BEGIN

5 DBMS_OUTPUT.PUT_LINE('*****');

6 FOR cur IN cur_para('111') LOOP

7 DBMS_OUTPUT.PUT_LINE(cur.stuname);

8 END LOOP;

9 END;

4、%ISOPEN属性的使用:

SQL> DECLARE

2 t_name student.stuname%TYPE;

3 CURSOR cur(id varchar2) IS

4 SELECT stuname FROM student WHERE stuno=id;

5 BEGIN

6 IF cur%ISOPEN THEN

7 DBMS_OUTPUT.PUT_LINE('THE cur has been opened');

8 ELSE

9 OPEN cur('111');

10 END IF;

11 FETCH cur INTO t_name;

12 CLOSE cur;

13 DBMS_OUTPUT.PUT_LINE(t_name);

14 END;

5、%ROWCOUNT属性的使用:

SQL> DECLARE

2 t_name VARCHAR2(10);

3 CURSOR mycur IS

4 SELECT stuname FROM student;

5 BEGIN

6 OPEN mycur;

7 LOOP

8 EXIT WHEN mycur%NOTFOUND OR mycur%NOTFOUND IS NULL;

9 DBMS_OUTPUT.PUT_LINE('*****ROWCOUNT****'||mycur%ROWCOUNT);

10 END LOOP;

11 CLOSE mycur;

12 END;

oracle 流标和sql效率,Oracle 中流标使用实例相关推荐

  1. oracle分页查询sql语句通用,oracle分页查询sql语句,oracle分页查询sql语句详解

    oracle分页查询sql语句,oracle分页查询sql语句详解,Oracle分页查询sql语句 Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点 ...

  2. oracle 12c pl/sql语言,ORACLE 12C SQL语句中通过with 定义PL/SQL 函数

    在ORACLE 12C支持在sql语句中编写函数,用来实现sql语句操作需要使用函数的部分功能,该功能对于你不想在数据库中新建函数 or 你的库是read only模式下要使用新函数实现某种功能,可以 ...

  3. Oracle MySQL Hive sql判断字符串中包含某个字符的个数

    用length函数求出字符串长度,再对源数据中某个字符去掉求字符串长度,两个长度相减,得出包含某个字符的个数 MySQL所有版本: select length('2022-11-16') - leng ...

  4. oracle的cte,sql – 在Oracle中创建CTE

    您可以通过从dual中选择日期值来创建公用表表达式(CTE, subquery factoring等),并将它们组合在一起: with RTG_YEARS (YR) as ( select to_da ...

  5. oracle unpivot 空值,sql – 处理UNPIVOT中的NULL值

    这很难看,但不依赖于必须找到NULL的带外替换: declare @pivot_task table ( age int null, [a] numeric(8,2), [b] numeric(8,2 ...

  6. oracle收集直方图,sql – 在Oracle中创建直方图/频率分布的最佳方法?

    如果您的创建时间是日期列,那么这将是微不足道的: SELECT TO_CHAR(CREATE_TIME,'DAY:HH24'),COUNT(*) FROM EVENTS GROUP BY TO_CHA ...

  7. oracle 优化分组 sql语句,Oracle SQL语句之常见优化方法 五

    0.低效SQL语句查询: SELECT b.sql_text, --SQL內容 a.sid, a.serial#, a.status, a.machine, --哪台机器運行的SQL a.userna ...

  8. oracle下使用sql命令,ORACLE笔记(2)ORACLE 学习中用到的SQL命令

    sqlplus sys/****** as sysdba   利用超级用户名的登录(在我使用时没有成功) sqlplus "as sysdba";可以登陆到ORACLE上,这种方式 ...

  9. oracle数据库sqlloader,sql loader ---ORACLE SQLLDR

    sql loader的基本使用: 1. sql loader里有几个概念: 控制文件:和数据库的文件不是一回事,个人理解是用于数据加载控制的. 数据文件:要加载入库的数据文件,支持文本,csv, 等格 ...

  10. oracle如何调试sql,调试oracle与调试sql server存储过程

    [IT168 技术]关于存储过程的调试,知道方法以后很简单,但在不知道的时候,为了测试一个存储过程的正性,print,插入临时表等可谓是使出了浑身解数,烦不胜烦.下面就把我工作中调试oracle存储过 ...

最新文章

  1. rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能
  2. 自己做站点(二) 20块钱搞定一个企业站:域名amp;空间申请
  3. 原创:pta做题笔记:注意数组大小大一点!//准考证号,试机座位,考试座位查询
  4. 【经验分享】来到新公司,我所遇到的三重障碍
  5. 佳能2020转印带拆卸图解_RF人文街拍小钢炮 佳能RF35mm F1.8 MACRO IS STM
  6. modal vue 关闭_Vue弹出框的优雅实践
  7. P2089 烤鸡(python3实现)
  8. fastdfs-02-上传与下载流程
  9. 关闭进程_Xbox Game Bar重磅更新:可不离开游戏关闭系统进程
  10. FAQ系列 | mysqldump选项之skip-opt
  11. 一行shell解决Mac文件乱码问题
  12. 激光雷达点云数据处理一(Terrasolid软件安装)
  13. 傅里叶级数与积分方程
  14. 三维空间坐标系变换——旋转矩阵
  15. MySQL的索引失效问题
  16. Shifterator库 | 词移图分辨两文本用词风格差异
  17. 今年阿里巴巴重要开源项目全在这里
  18. Cocos2d-xV3.17.2获取csb文件按钮组件并绑定事件
  19. HTML+CSS简单的淘宝首页框架布局小练(三)
  20. 程序员转正述职报告_公司程序员试用期转正工作总结

热门文章

  1. Javascript特效:tab标签
  2. 程序员,如何从平庸走向理想?答:干困难事!
  3. 论文笔记_S2D.05-2012-ECCV-从立体图像中提取与场景一致的三维对象和深度
  4. 【一天一个C++小知识】016:c++11中的lambda表达式
  5. PCL对点云进行滤波处理并进行颜色可视化
  6. [pl-slam] 几个重要的参数属性
  7. 持有对方的引用内部类
  8. SQL点点滴滴_常用函数
  9. 【转】用Terracotta实现Master-Worker
  10. 在ubuntu下怎么安装和使用Github