关闭

oracle 存储过程之游标(loop)使用

标签: oracle存储
346人阅读 评论(0) 收藏 举报
分类:

最近再接触Oracle的存储过程,目前来说,项目中主要是两种存储方式,一种是loop游标的方式,一种是merge into 函数
今天主要是说明一下游标的主要的用法,感觉这个看懂了,游标这一类应该都是相通的,下面就是主要的例子

alter table T_JSQY_EDUEXPERITION add verify_date TIMESTAMP(6);增加表字段
ALTER TABLE 表名 MODIFY cardtype NULL;
这个是用到修改表机构的,大家可以随便了解一下。
declare  --声明两个变量
  v_id VARCHAR2(50);
  v_int number;
  cursor yb is
    select a.id  from T_D5_PUNISHMENT a where a.removed = '0';
begin
  v_int := 1;--变量赋值
  open yb;   --打开游标
  loop       --开始标记
    fetch yb into v_id;--游标赋值  当然这边可以赋值多个值
    (譬如:fetch yb into v_id , v_name;)
    exit when yb%notfound;--游标一条一条地遍历记录,当找不到记录时退出
    begin
      update T_D5_PUNISHMENT a set a.cardtype= case a.cardtype when '02' then '01' when '03' then '02' when '04' then '05' else '' end  --实际操作
        where a.id=v_id;
    exception    --异常抛出
      when others then
        dbms_output.put_line(v_id);
    end;
    v_int := v_int+1;
    if(v_int >=500) then
      commit;   --500条提交一次 分单系统压力,提高上传的效率
      v_int :=0;
    end if;
  end loop;  --结束标记
  commit;
  close yb;  --关闭游标
end;         --结束
/            --这个斜杠用处很大,比如好多条存储过程的话,可以写在后面一起执行。

上面的是个人的一些总结,见解,有什么疑问的、不对的地方,大家可以和我交流,还有一种merge into函数的存储过程整理,下次更新。
http://blog.csdn.net/z1729734271/article/details/52386664

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:52161次
    • 积分:991
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:9篇
    • 译文:2篇
    • 评论:7条
    博客专栏
    文章分类
    最新评论