关于oracle的cursor的使用

本文分享了一段使用PL/SQL游标进行数据插入的代码示例,并在使用过程中遇到了两个主要问题:一是循环中因执行速度过快无法生成唯一主键导致重复;二是参数名与表列名重复引起的数据读取问题。

     今天项目突然要用到游标,好久没有使用了有些生疏,在使用中发现以前没注意的一些问题,先贴上代码

  Procedure p_insert_wzdeqd(abc Varchar2,sj Varchar2)
  Is      
    v_temp varchar2(30);
       v_flows_user wz_dewzqd_mb%rowtype;
   Cursor  flows_user is select  xh,mc,gg,dw,dezb,sybm from wz_dewzqd_mb where wz_dewzqd_mb.sybm=abc ;
  Begin
   open flows_user;
   loop
   fetch flows_user into v_flows_user;
    exit when flows_user%notfound; 
      --    select substr(to_char(systimestamp, 'yyyymmddhh24missff'), 1, 16) into v_temp from dual;
         insert into wz_dewzqd (xh,mc,gg,dw,dezb,sybm,yf) values(hmwz.nextval,v_flows_user.mc,v_flows_user.gg,v_flows_user.dw,v_flows_user.dezb,abc,to_date(sj,'yyyy-mm'));
        v_temp:='';
       commit;
      end loop;
if flows_user%isopen then
        Close flows_user;
     end if;
  End;

 

使用中发现如下问题:

1.在循环中由于执行速度过快,无法用时间戳或者查询语句去生成主键,开始不停的报主键重复错误郁闷。

2.参数名不能和表名的列名重复,容易造成无法读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值