关于oracle的cursor的使用

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

  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.参数名不能和表名的列名重复,容易造成无法读取

你可能感兴趣的:(oracle)