知识大全 ORACLEPLSQL游标学习
Posted 变量
篇首语:知识是到达天堂的翅膀。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ORACLEPLSQL游标学习相关的知识,希望对你有一定的参考价值。
ORACLEPLSQL游标学习 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
游标
游标是指向上下文区域的句柄或指针
上下文区域 用于SQL处理的内存区
上下文区域的内容
语句处理的行数
指向语句的语法分析表示的指针
游标的类型
静态游标
隐式游标
显示游标
REF游标(动态游标)
一 隐式游标
有ORACLE在内部声明
用于处理
DML语句
返回单行的查询
游标属性
%NOTFOUND 对数据操作成功返回FALSE 否则返回TRUE
%FOUND 对数据操作成功返回TRUE 否则返回FALSE
%ROWCOUNT 游标影响的行数
%ISOPEN 游标是否打开
begin
insert into cities values( aaa bbb );
DBMS_OUTPUT PUT_LINE( 游标所影响的行数 ||SQL%ROWCOUNT);
if SQL%NOTFOUND then
DBMS_OUTPUT PUT_LINE( NOTFOUND为真 );
else
DBMS_OUTPUT PUT_LINE( NOTFOUND为假 );
end if;
if SQL%FOUND then
DBMS_OUTPUT PUT_LINE( FOUND为真 );
else
DBMS_OUTPUT PUT_LINE( FOUND为假 );
end if;
if SQL%ISOPEN then
DBMS_OUTPUT PUT_LINE( ISOPEN为真 );
else
DBMS_OUTPUT PUT_LINE( ISOPEN为假 );
end if;
end;
输出结果为
游标所影响的行数
NOTFOUND为假
FOUND为真
ISOPEN为假
declare
icount int := ;
begin
insert into cities values ( aaa bbb );
if SQL%NOTFOUND then
DBMS_OUTPUT PUT_LINE( 没有插入成功 );
else
DBMS_OUTPUT PUT_LINE( 插入成功 );
end if;
mit;
end;
输出结果为
插入成功
declare
icount int := ;
begin
update cities set country= aaaa ;
if SQL%NOTFOUND then
DBMS_OUTPUT PUT_LINE( 没有更新成功 );
else
DBMS_OUTPUT PUT_LINE( 更新成功 );
end if;
mit;
end;
输出结果为
更新成功
二 显式游标
由用户显式声明
游标将指向活动集中的当前行
控制显示游标
Open
Fetch
Close
declare
cursor empCur is select * from emp;
emprow emp%ROWTYPE;
begin
open empCur;
fetch empCur into emprow;
DBMS_OUTPUT put_line(emprow empno|| ||emprow ename);
close empCur;
end;
输出结果
SMITH
loop循环
declare
cursor empCur is select * from emp;
emprow emp%ROWTYPE;
begin
open empCur;
loop
fetch empCur into emprow;
DBMS_OUTPUT put_line(emprow empno|| ||emprow ename);
DBMS_OUTPUT put_line( 提取了 ||empCur%ROWCOUNT|| 行 );
exit when empCur%NOTFOUND;
if empCur%NOTFOUND then
exit ;
end if;
end loop;
close empCur;
end;
while循环
declare
cursor empCur is select * from emp;
emprow emp%ROWTYPE;
begin
open empCur;
fetch empCur into emprow;
while empCur%FOUND loop
DBMS_OUTPUT put_line(emprow empno|| ||emprow ename);
DBMS_OUTPUT put_line( 提取了 ||empCur%ROWCOUNT|| 行 );
fetch empCur into emprow;
end loop;
close empCur;
end;
输出结果
SMITH
提取了 行
ALLEN
提取了 行
WARD
提取了 行
JONES
提取了 行
MARTIN
提取了 行
BLAKE
提取了 行
CLARK
提取了 行
SCOTT
提取了 行
KING
提取了 行
TURNER
提取了 行
ADAMS
提取了 行
JAMES
提取了 行
FORD
提取了 行
MILLER
提取了 行
MILLER
提取了 行
for循环
循环游标
显式游标的替代方法
它的工作原理是什么
隐式打开游标
自动从活动集获取行
在处理完所有行时关闭游标
优点
简化代码的编写
declare
cursor empCur is select * from emp where sal>&intputsal; 绑定变量
iCount int ;
begin
iCount := &Count;
DBMS_output put_line(iCount);
for emprow in empCur loop
DBMS_OUTPUT put_line(emprow empno|| ||emprow ename);
DBMS_OUTPUT put_line( 提取了 ||empCur%ROWCOUNT|| 行 );
end loop;
end;
三 REF游标
在运行时使用不同的语句与之关联
REF游标使用游标变量
游标变量
一种引用类型
可以在运行时指向不同的存储位置
Close 语句关闭游标并释放用于查询的资源
游标变量的类型
具有约束的游标变量
具有返回类型的游标变量
也称为 强游标
无约束的游标变量
没有返回类型的游标变量
也称为 弱游标
declare
type RefEmpcur is ref cursor return emp%ROWTYPE;
Empcur RefEmpcur;
Emprow emp%ROWTYPE;
flag int := ;
begin
flag := &flag;
if flag= then
OPEN Empcur for select * from emp where sal> and sal< ;
elsif flag= then
OPEN Empcur for select * from emp where sal>= ;
else
OPEN Empcur for select * from emp;
end if;
loop
fetch Empcur into Emprow;
DBMS_OUTPUT PUT_LINE(Emprow empno);
exit when Empcur%NOTFOUND;
end loop;
close Empcur;
end;
游标变量的限制
不能在程序包中声明游标变量
远程子程序不能接受游标变量的值
不能使用比较操作符对游标变量进行相等或不相等测试
不能将空值赋予游标变量
cha138/Article/program/Oracle/201311/18224相关参考
游标是构建在PL/SQL中用来查询数据获取记录集的指针它让开发者一次访问结果集中一行记录 在oracle中提供了两种游标静态游标ref游标 静态游标静态游标是在编译的时候就被确定然后把结果集复
知识大全 oraclePL/SQL之隐式游标和ref游标总结
oraclePL/SQL之隐式游标和ref游标总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Oracle游标使用总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Oracle游标分为显示游标
使用游标卡尺测量接触线磨耗时,其方法及步骤如下: (1)用游标卡尺的外径卡脚卡紧接触线。 (2)读出游标卡尺的指示数据并记录。 ①先看副尺零线在主尺上错过几个格,读出整数A。如:副尺在主尺上
使用游标卡尺测量接触线磨耗时,其方法及步骤如下: (1)用游标卡尺的外径卡脚卡紧接触线。 (2)读出游标卡尺的指示数据并记录。 ①先看副尺零线在主尺上错过几个格,读出整数A。如:副尺在主尺上
为了处理SQL语句Oracle将在内存中分配一个区域这就是上下文区这个区包含了已经处理完的行数指向被分析语句的指针整个区是查询语句返回的数据行集游标就是指向上下文区句柄或指针 两种游标 一显示
Oracle游标使用总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle游标分为显示
我们的技术专家回答关于游标范围(extent)和间隔的问题 是不是从Oracle第版以后的版本隐式游标得到了优化不会两次取数据?还有为什么当表T在列X上有一个索引时下面的隐式游标比显式游标运行得
Oracle数据库游标的类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 游标是SQL的一个内
快速掌握Oracle数据库游标的使用方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 显式游标