Oracle 静态 动态游标的使用

declare
      ida varchar(200); 
      a varchar(200);
      b varchar(200);
      c varchar(200);
      i number(20);
      err number(20) default 0;
      type cs is ref cursor return test%rowtype; --定义强类型游标
      mycursor cs;  -- 声明动态强类型游标变量
      m test%rowtype; 
      CURSOR mycursor2 is select * from test;
--       test1Cursor Cursor for select * from test;
begin 
  ida:= '13140';
  i := 13139;
 -- select gp.rugr_lruname into a from R_T_RUGROUP gp where gp.rugr_id in (select sp.rumesarearugr_id from  R_S_RuMembership sp where sp.saru_id = i and sp.rumes_state = 1);
 -- select gp.rugr_lruname into b from R_T_RUGROUP gp where gp.rugr_id in (select sp.rumescityrugr_id from  R_S_RuMembership sp where sp.saru_id = i and sp.rumes_state = 1);
 -- select gp.rugr_lruname into c from R_T_RUGROUP gp where gp.rugr_id in (select sp.rumesprovincerugr_id from  R_S_RuMembership sp where sp.saru_id = i and sp.rumes_state = 1); 
  err:=0;  
  while i<13144 loop
          insertCard(i,'aaaa',err);
          if err != 0 then
            dbms_output.put_line('inser err'||err||' i='||i);            
          end if;
          if SQL%FOUND then
              dbms_output.put_line('ok ok ok ok');
          end if; 
          i:=i+1;                    
  end loop;
  commit;
  Dbms_Output.put_line('总出错数'||err);
  Dbms_output.put_line('区级:'||a);  Dbms_output.put_line('市级:'||b);  Dbms_output.put_line('省级:'||c);    
  open mycursor for select * from test;
 
  insert into test values(2113,'1111');
  loop
      fetch mycursor into m;
      exit when mycursor%NOTFOUND;
      dbms_output.put_line(m.id);
   end loop;  
   
   
   for m in mycursor2
     loop
       dbms_output.put_line(m.id || m.name);
     end loop;
   
  /*
  lookCard(mycursor);
  insert into test values(1112,'1111');
  commit;
    loop
      fetch mycursor into m;
      exit when mycursor%NOTFOUND;
      dbms_output.put_line(m.id);
    end loop;  
    */     
end;
/

--select * from test ;

/*
create or replace procedure lookCard(
       cur out sys_refcursor       
)is 
begin
     open cur for select * from test; 

end;
/
*/
--select * from test; 
/*
create or replace  procedure insertCard(
       id in number,
       con in varchar,
       err in out varchar 
)is
begin
  insert into test values(id,con);
  err:=0;
  EXCEPTION 
            WHEN dup_val_on_index THEN 
                 err:=err+1;
                 dbms_output.put_line('出错');
end;
/
*/
/*
create table test (
       id number(20),
       name varchar2(200)
)
alter table test add constraint aa unique(id);

*/

转载于:https://my.oschina.net/u/723981/blog/292043

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值