--工作中偶尔会需要用到存储过程 .边学习边用. 解释一下存储过程的构造. 工具 plsql,数据库oracle .
create or replace procedure update_AC11_BY_ac01_sjzx_sc2 is --程序头 和程序尾巴名字要一样
v_aac999 varchar2(125);--一体化id 动态参数
v_aac002 varchar2(125);--身份证号码 v_aac003 varchar2(120);--姓名
v_id varchar2(120);--本系统id v_aae315 varchar2(20);--修改前的社保id
cursor cur is --游标
select t.aac999,t.aac002,t.aac003 from ac01_sjzx_sc2 t where t.state = 'Y';
begin --打开游标
open cur;
loop
fetch cur into v_aac999,v_aac002,v_aac003; --把查询出来的数据 复制到 上面的参数里去. 注意这里要用into参数
exit when cur%NOTFOUND;
begin --开始循环sql
--通过身份证和姓名获取本系统id
select t.aac001 into v_id from ac01 t where t.aac003=v_aac003 and t.aac002=v_aac002;
--先判断社保id是否已经存在于ac11表
--select count(aae315) into v_aae315 from ac11 a WHERE a.aae315=v_aac999;
--if v_aae315 =0 then -- 这里注意 和java不同的是 if then
--通过本系统id修改社会保险id
UPDATE ac11 a set a.aae315=v_aac999 WHERE a.aac001=v_id;
-- end if; -- 结束注意用 end if;
-- 已经修改标识
UPDATE ac01_sjzx_sc_x a set a.state ='1' WHERE A.AAC999=v_aac999;
commit; --每次循环完成注意要先提交再结束循环.
end;
end loop;
end update_AC11_BY_ac01_sjzx_sc2; --和程序头相互呼应