码迷,mamicode.com
首页 > 数据库 > 详细

【PL/SQL练习】游标cursor :oracle 在执行sql语句时,为sql语句所分配的一个私有的内存区域

时间:2016-11-26 17:32:06      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:values   record   sql   ted   upd   value   date   span   not   

隐式游标:一次只能返回一行结果(不需要定义,默认自动建立)
  显式游标: 需要开发人员提前定义,可以通过循环的方式处理游标里的sql语句,返回多行结果
 
  隐式游标的属性:
   sql%rowcout    统计在游标中处理的记录数
   sql%found      如果在游标中能找到符合条件的一条记录,结果为true
   sql%notfound   如果在游标中能找不到符合条件的一条记录,结果为true
   sql%isopen     判断游标是否打开,在隐式游标中默认游标自动打开

1.隐式游标:

sql%notfound   如果在游标中能找不到符合条件的一条记录,结果为true  
SQL> declare
  2  
  3    v_id t1.id%type;
  4  
  5  begin
  6  
  7    v_id :=10;
  8  
  9    update t1 set id=20 where id=v_id;
 10    if  sql%notfound then
 11    insert into t1(id) values (v_id);
 12    commit;
 13    end if;
 14  end;

2. sql%found      如果在游标中能找到符合条件的一条记录,结果为true

SQL> declare
  2  
  3    v_id t1.id%type;
  4  
  5  begin
  6  
  7    v_id :=10;
  8  
  9    delete from t1 where id = v_id;
 10  
 11    if  sql%found then
 12    dbms_output.put_line(T1 recorder is delete !);
 13    commit;
 14    end if;
 15  end;

3.sql%rowcout    统计在游标中处理的记录数

SQL> declare
  2  
  3    v_id t1.id%type;
  4  
  5  begin
  6  
  7    v_id :=10;
  8  
  9    insert into t1 (id) values (v_id);
 10    delete from t1 where id = v_id;
 11  
 12    if  sql%found then
 13    dbms_output.put_line(T1 recorder is delete !);
 14    dbms_output.put_line(T1 recorders ||sql%rowcount|| rows was deleted !);                //统计删除的行数
 15    commit;
 16    end if;
 17  end;


 

 

【PL/SQL练习】游标cursor :oracle 在执行sql语句时,为sql语句所分配的一个私有的内存区域

标签:values   record   sql   ted   upd   value   date   span   not   

原文地址:http://www.cnblogs.com/tomatoes-/p/6104302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!