oracle对查询结果求和_7.oracle什么是游标以及案例⽤法⽤游标来指代⼀个DML SQL操作返回的结果集。即当⼀个对数据库的查询操作返回⼀组结果集时,⽤游标来标注这组结果集,以后通过对
多⾏的结果集必须要⽤游标来获取。
游标的操作来获取结果集中的数据信息。在plsql中要获取多⾏的结果集必须要⽤游标来获取。
1.创建游标:CURSOR 游标名 IS select语句 (即⽤游标获取select语句⾥的值)
1.创建
2.分类:
2.分类
>>显性游标
1.显性游标的固定步骤
打开游标:open 游标名
获取值:fetch 游标名 into 变量....//每次取⼀⾏给变量
关闭游标:close 游标名
2.显性游标的属性
游标名%found:当最近⼀次读记录时成功返回,则值为TRUE;
游标名%notfound:当最近⼀次读记录时为空时,则值为TRUE;
游标名% ROWCOUNT:返回由INSERT、UPDATE或DELETE 所影响的⾏数以及由SELECT INTO所选择的⾏数。
游标名%ISOPEN:当游标已打开时返回 TRUE
3.简单案例(打印emp表中的员⼯编号和员⼯姓名):
显性游标+loop循环
打印emp表中的员⼯编号和员⼯姓名:
declare
vno number(5);
vname varchar2(20);
cursor c is select empno,ename from emp;
begin
open c;
loop
fetch c into vno,vname;
exit when c%notfound;
dbms_output.put_line(vno||'  '||vname);
end loop;
oracle游标的使用close c;
end;
显性游标+while循环
打印emp表中的员⼯编号和员⼯姓名:
declare
vno number(10);
vname varchar2(20);
cursor c is select empno,ename from emp;
begin
open c;
fetch c into vno,vname;  //⼀次取⼀⾏数据赋值
while c%found loop
dbms_output.put_line(vno||'  '||vname);
fetch  c into vno,vname;  //这句话是为了使最后游标不到值,⽽能够跳出循环
end loop;
close c;
end;
显性游标+for循环
打印emp表中的员⼯编号和员⼯姓名:
declare
i emp%rowtype;
cursor c is select empno,ename from emp;
begin
for i in c loop
dbms_output.put_pno||'  '||i.ename);
end loop;
end;
>>隐性游标
对于⾮查询语句,如修改、删除操作,则由ORACLE 系统⾃动地为这些操作设置游标并创建其⼯作区,这些由系统隐含创建的游标称为隐
系统定义的。
性游标,隐性游标的名字为SQL
隐性游标的名字为SQL,这是由ORACLE 系统定义的
对于隐性游标的操作,如定义、打开、取值及关闭操作,都由ORACLE 系统⾃动地完成,⽆需⽤户进⾏处理。⽤户只能通过隐式游标的相关属性,来完成相应的操作。、
1.隐形游标的属性
由于隐性游标的名称是“SQL”,所以访问⽅法:SQL%游标属性名。
SQL%NOTFOUND属性 // 和显性意思⼀样
SQL%FOUND属性 //和显性意思⼀样
SQL% ROWCOUNT属性
SQL%ISOPEN属性(总是FALSE) //因为隐性的不需要打开那些步骤
INSERT、UPDATE、DELETE 、以及由SELECT INTO所影响的⾏,都有隐性游标。
2.案例:
//查看更新了⼏条数据
declare
begin
update emp set deptno=11 where deptno=10;
if sql%notfound then
dbms_output.put_line('没有到该条数据');
else
dbms_output.put_line('更新了'||sql%rowcount||'数据');    end if;
end;
展⽰结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。