过程1

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;

你可能感兴趣的:(sql)