暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 高级游标

自学Oracle 2019-02-27
773

在游标中使用参数

cursor c_name (v_id in TEST01.ID%type) is select id,name ,age addtime from test01 where id =v_id;

在游标中使用参数,需要注意以下重要内容:

游标参数会让该游标的复用性更好。

游标参数可以被赋予默认值。

游标的作用范围是该游标。

参数的模型可以只为in。

当声明支持参数的游标时,必须在调用时提供参数的值。

open c_name (parameter_value)


DECLARE

   CURSOR c_name (p_name IN test01.name%TYPE)

   IS

      SELECT id, name, age  FROM test01  WHERE name = p_name;

BEGIN

   FOR r_name IN c_name ('bb')

   LOOP

      DBMS_OUTPUT.put_line (r_name.id || '===' || r_name.age);

   END LOOP;

END;


for update 和where current 游标

当希望使用游标来更新数据库的表时,只能使用游标for update子句。

当希望更新最新检索的数据行时,可以使用for current of。只能在for update of 游标中使用where current of

where current of 子句的好处是,免于在update 语句中使用where字句。

DECLARE

   CURSOR v_name   IS   SELECT id, name, age     FROM test01 WHERE id < 4

      FOR UPDATE OF name;

BEGIN

   FOR r_name IN v_name

   LOOP

      UPDATE test01  SET name = 'vvv'  WHERE CURRENT OF v_name;

   END LOOP;

   COMMIT;

END;


本公众号是个人学习工作笔记,希望大家发现问题能及时和我本人沟通,希望你与我共同成长。个人微信zgjt12306。



 

欢迎关注“自学Oracle”



文章转载自自学Oracle,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论