PL/SQL之游标

本文介绍了Oracle中的游标概念,包括显示游标和隐式游标的使用。详细阐述了游标的属性,如%isopen、%found、%notfound和%rowcount,并通过例题展示了如何声明、打开、提取数据和关闭游标。此外,还讨论了游标变量(动态游标或引用游标),包括强游标变量和弱游标变量的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle中会为查询语句分配一个空间,储存结果集,而这块空间由游标来命名的,因此,也可以通过游标来访问这块内存中存储的信息。简单来说,游标就是一个用来查询结果集的指针

游标本身是无法输出的

一、游标分为显示游标和隐式游标

1.隐式游标:PL/SQL会为所有的SQL操作(包括只返回一条操作记录的查询操作和所有的DML语句)声明一个隐式游标
注意:此时不能返回多条记录
例题1:在emp表中对某部门的员工薪水增加100元,并显示本次更新操作共涉及了多少员工。
(1)用之前的方法去做:

declare
    v_sal emp.sal%type;
    v_deptno emp.deptno%type:=&aa;
    v_num number;
begin
  
    update emp set sal=sal+100 where deptno=v_deptno;
    select count(empno) into v_num from emp where deptno=v_deptno;
    dbms_output.put_line(v_num);
end;

(2)用游标的方法去做

declare
   v_deptno emp.deptno%type:=&aa;    
begin
    update emp set sal=sal+100 where deptno=v_deptno;
    --可以直接利用游标的属性去做,%rowcount返回已提取的记录的行数。
    dbms_output.put_line(sql%rowcount);--隐式游标引用该属性
end;

上面的是简单的对游标的使用,下面讲解一下游标的属性:
%isopen:测试游标是否已经打开,返回boolean值
%found:fetch后,是否提取到了记录,返回boolean值
%notfound:fetch后,是否没有提取到记录,返回boolean
%rowcount:返回游标中已提取的记录行数,返回整数

2.显示游标:暂存查询取出的多行数据,然后一行一行地进行处理
(1)步骤:声明游标,打开游标,提取数据,关闭游标
在这里插入图片描述
(2)fetch语句的作用:取出一条记录、指针指向下一条记录
例题2:声明一个游标,用于取得部门10的员工的姓名和薪水信息:

declare
   cursor mycur is select ename,sal from emp where deptno=10;
   v_ename emp.ename%type;
   v_sal emp.sal%type;
begin
    open mycur;
    loop
        fetch mycur 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值