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

Posted Tomatoes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PL/SQL练习游标cursor :oracle 在执行sql语句时,为sql语句所分配的一个私有的内存区域相关的知识,希望对你有一定的参考价值。

隐式游标:一次只能返回一行结果(不需要定义,默认自动建立)
  显式游标: 需要开发人员提前定义,可以通过循环的方式处理游标里的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语句所分配的一个私有的内存区域的主要内容,如果未能解决你的问题,请参考以下文章

oracle PL/SQL编程语言之游标的使用

oracle 游标是做啥用的

PL/SQL练习显式游标

Oracle PL/SQL 引用游标如何

Oracle PL SQL ref cursor%ROWTYPE 此表达式的类型声明不完整或格式错误

如何使用Oracle的游标?