oracle 流标和sql效率,Oracle 中流标使用实例
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 中流标使用实例相关推荐
- oracle分页查询sql语句通用,oracle分页查询sql语句,oracle分页查询sql语句详解
oracle分页查询sql语句,oracle分页查询sql语句详解,Oracle分页查询sql语句 Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点 ...
- oracle 12c pl/sql语言,ORACLE 12C SQL语句中通过with 定义PL/SQL 函数
在ORACLE 12C支持在sql语句中编写函数,用来实现sql语句操作需要使用函数的部分功能,该功能对于你不想在数据库中新建函数 or 你的库是read only模式下要使用新函数实现某种功能,可以 ...
- Oracle MySQL Hive sql判断字符串中包含某个字符的个数
用length函数求出字符串长度,再对源数据中某个字符去掉求字符串长度,两个长度相减,得出包含某个字符的个数 MySQL所有版本: select length('2022-11-16') - leng ...
- oracle的cte,sql – 在Oracle中创建CTE
您可以通过从dual中选择日期值来创建公用表表达式(CTE, subquery factoring等),并将它们组合在一起: with RTG_YEARS (YR) as ( select to_da ...
- oracle unpivot 空值,sql – 处理UNPIVOT中的NULL值
这很难看,但不依赖于必须找到NULL的带外替换: declare @pivot_task table ( age int null, [a] numeric(8,2), [b] numeric(8,2 ...
- oracle收集直方图,sql – 在Oracle中创建直方图/频率分布的最佳方法?
如果您的创建时间是日期列,那么这将是微不足道的: SELECT TO_CHAR(CREATE_TIME,'DAY:HH24'),COUNT(*) FROM EVENTS GROUP BY TO_CHA ...
- oracle 优化分组 sql语句,Oracle SQL语句之常见优化方法 五
0.低效SQL语句查询: SELECT b.sql_text, --SQL內容 a.sid, a.serial#, a.status, a.machine, --哪台机器運行的SQL a.userna ...
- oracle下使用sql命令,ORACLE笔记(2)ORACLE 学习中用到的SQL命令
sqlplus sys/****** as sysdba 利用超级用户名的登录(在我使用时没有成功) sqlplus "as sysdba";可以登陆到ORACLE上,这种方式 ...
- oracle数据库sqlloader,sql loader ---ORACLE SQLLDR
sql loader的基本使用: 1. sql loader里有几个概念: 控制文件:和数据库的文件不是一回事,个人理解是用于数据加载控制的. 数据文件:要加载入库的数据文件,支持文本,csv, 等格 ...
- oracle如何调试sql,调试oracle与调试sql server存储过程
[IT168 技术]关于存储过程的调试,知道方法以后很简单,但在不知道的时候,为了测试一个存储过程的正性,print,插入临时表等可谓是使出了浑身解数,烦不胜烦.下面就把我工作中调试oracle存储过 ...
最新文章
- rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能
- 自己做站点(二) 20块钱搞定一个企业站:域名amp;空间申请
- 原创:pta做题笔记:注意数组大小大一点!//准考证号,试机座位,考试座位查询
- 【经验分享】来到新公司,我所遇到的三重障碍
- 佳能2020转印带拆卸图解_RF人文街拍小钢炮 佳能RF35mm F1.8 MACRO IS STM
- modal vue 关闭_Vue弹出框的优雅实践
- P2089 烤鸡(python3实现)
- fastdfs-02-上传与下载流程
- 关闭进程_Xbox Game Bar重磅更新:可不离开游戏关闭系统进程
- FAQ系列 | mysqldump选项之skip-opt
- 一行shell解决Mac文件乱码问题
- 激光雷达点云数据处理一(Terrasolid软件安装)
- 傅里叶级数与积分方程
- 三维空间坐标系变换——旋转矩阵
- MySQL的索引失效问题
- Shifterator库 | 词移图分辨两文本用词风格差异
- 今年阿里巴巴重要开源项目全在这里
- Cocos2d-xV3.17.2获取csb文件按钮组件并绑定事件
- HTML+CSS简单的淘宝首页框架布局小练(三)
- 程序员转正述职报告_公司程序员试用期转正工作总结