db2存储过程总结

create or replace procedure P_test (in v_date date,out v_return int,out v_message varchar(500))     --声明存储,in输入参数,out输出参数call的时候输入?, call  p_zongjie('2021-1-1',?)
begin
    declare v_name varchar(10);
    declare v_age varchar(3);
    declare v_money int;
    declare v_cout default 10;
    declare v_cursor cursor for   --如果游标循环有commit ,rollback,需要加with hold
                    select name ,age from cust;
    open v_cursor
    testloop:
    loop
      fetch v_cursor into v_name, v_age;
      set v_cout=v_cout-1;
      if name is null then
        iterate v_cursor;     --相当于 continue,
      end if;      
      
      P:begin atomic    --undo 异常处理只能在atomic里执行 这里P相当于局部异常处理
      declare undo handler for sqlexception
      begin
      values('存过发生异常:'  || char(sqlcode)) into v_message;
      set v_return=-1;
      end;
      update cust set age=100 where name=v_name;
      end P;    
     if v_cout=0 then
        leave v_cursor;  --相当于break
      end if;
    end loop;
    close v_cursor;
    
end

 

posted @ 2021-12-16 18:28  mestery偲  阅读(209)  评论(0)    收藏  举报