create or replace procedure autoplan_bysch(v_schid number) is v_planId number; v_itemid number; v_fee number(8,2); v_subname varchar(40); v_groupid number; v_subno number; TYPE tCursor is REF CURSOR; cur_item tCursor; begin --查找只有明细,没有计划的学校 delete from sch_plan where schid =v_schid; delete from sch_item where schid =v_schid; --对每个学校进行处理 select SEQ_PLANID.Nextval into v_planId from sys_org where rownum=1; --插入缴费计划表 insert into sch_plan values( v_planId, --计划编号 '2007收费',--计划名称 6,--计划状态 sysdate,--计划时间 v_schid,--学校编号 sysdate,--执行时间 sysdate,--结束时间 0,--自动缴费标志 sysdate,--缴费时间 2007,--学年 0,--学期 1,--备案是否 '自动生成', 0, ''); --开始插入计划明细信息 open cur_item for select distinct feepay,subname,groupid,subno from pay_list where schid=v_schid; loop --获取学校每个班级的收费情况 fetch cur_item into v_fee,v_subname,v_groupid,v_subno; exit when cur_item%notfound; --插入缴费计划明细 select seq_schitemid.nextval into v_itemid from sys_org where rownum=1; insert into sch_item values( v_itemid,--编号 v_planid,--计划编号 v_subno,--科目编号:稍后更新 v_schid,--学校编号 v_groupid,--组织编号 9999,--年级 v_fee, '学校未提供这部分数据',--收费依据 0,--自愿标志 0,--标准 0,--备案 v_subname,--费用名称,放到remark里面了 v_fee,--价格 1,--数量 0,--标准 0,--警告标志 '');--警告信息 --更新pay_list表 update pay_list set planid=v_planid, schitemid = v_itemid, planname='2007收费' where schid=v_schid and groupid = v_groupid and subname = v_subname and feepay = v_fee; end loop; commit; end;