PL/SQL基础知识讲解之游标 (CURSOR)

该篇继续学习pl/sql基础知识,主要介绍一个姿势点:“游标”。
首先要知道游标是干嘛的?
在pl/sql编程中,我们通常处理多行事务是通过游标来实现的(这个可以类比java中迭代器概念)
游标是一个指向上下文的句柄和指针,通过游标pl/sql可以控制上下文区和处理语句时上下文会发生一些事情。
???(有点抽象哦,别慌,慢慢往下看就懂了)
对于不同的sql语句游标的使用情况又是不同的,如下:
对于非查询语句 : 游标是隐式的;
对于结果为单行的查询语句:游标是隐式的或显示的;
对于结果为多行的查询语句:游标是显示

(1)显式游标

第一步:定义游标
CURSOR cursor_name [(param1,parame2..)] IS SELECT ….
//后面接的是一个查询语句,一般都是返回多行的那种。其中参数param可带可不带,根据需要,参数的定义也要定义参数名,参数类型等(这里特别要主要的是在指定参数类型的时候不需要指定类型大小 如number(20),这都是错的)
第二步:打开游标 打开游标实质就是执行游标对应的select语句,然后将查询结果存储在工作区中,然后将游标指向结果集中的第一行数据,而且如果select语句中有for update,则open的同时还会锁定查询结果集所对应的表中的行数据。
OPEN cursor_name [value,value2…]
pl/sql中不能使用open重复打开同一个游标
第三步:提取数据 就是检索结果集中的数据行,放入到指定的输出变量。
fetch cursor_name into {variable_list | record_variable };
对该记录进行处理,
继续处理,直到结果集中没有记录
第四步:关闭游标 ,释放游标所占有的资源,同时使该工作区变为无效,不能再使用fetch提取数据,可以使用open重新打开。
close cursor_name;

下面就通过一些实例来看看游标到底怎么用的吧。
如:查询员工表前十名的员工的信息
declare
v_sal employees.salary%type;
v_name employee.last_name%type;
cursor empcursor is select last_name,salary from employees where rownum <11 order by desc;
begin
–打开游标
open empcursor ;
–提取数据;
fetch empcursor into v_name,v_sal ;
while empcursor%found loop
dbms_output.put_line(v_name||’,’||v_sal);
fetch empcursor into v_name,sal;
end loop;
close empcursor;
end;

在演示一下带参数的(rownum根据参数确定)
declare
v_sal employees.salary%type;
v_name employee.last_name%type;
cursor empcursor(empno number default 11) is select last_name,salary from employees where rownum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值