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

浙公网安备 33010602011771号