| 发表于:2007-12-14 15:38:321楼 得分:20 |
可以先计算循环次数,根据这个数值进行循环 结果: d:\> db2 call bump_salary_iftest(10,?) 输出参数的值 -------------------------- 参数名: ireturn 参数值: 35 返回状态 = 0 create procedure bump_salary_iftest(in deptnumber smallint,out ireturn int) language sql begin declare sqlstate char(5); declare v_salary double; declare v_years smallint; declare v_id smallint; declare at_end int default 0; declare not_found condition for sqlstate '02000'; declare v_temp int; declare c1 cursor for select id, cast(salary as double), years from staff; declare continue handler for not_found set at_end = 1; -- get the loop number select count(*) into v_temp from staff; set ireturn =0; open c1; fetch c1 into v_id, v_salary, v_years; while v_temp> 0 do -- out the ireturn to check the result set ireturn =ireturn+1; update staff set salary = 2150 * v_years where id = -1; fetch c1 into v_id, v_salary, v_years; set v_temp = v_temp-1; end while; close c1; end@ | | |
|