`

学生缴费存储过程

 
阅读更多
create or replace procedure SFGL_XSJF (p_xh   in varchar2,
                                       p_xn   in varchar2,
                                       p_xf    in varchar2,
                                       p_zsf   in varchar2,
                                       p_ybf   in varchar2,
                                       p_qt     in varchar2,
                                       p_czr    in varchar2,
                                       o_errMsg out varchar2) is
  /**
  *  学生缴费情况
  *  功能:根据费用更新应缴费用表的'已缴费用'、'未缴费用'字段,同时插入缴费记录
  *  2015年11月17日
  *   p_xh 学号
  *   p_xn 学年
  *   p_xf 学费
  *   p_zsf 住宿费
  *   p_ybf 医保费
  *   p_qt 其他费用
  *   p_czr 当前操作人
  *   o_errMsg 返回出错信息
  */
  v_yjfyid sfgl_yjfy.yjfyid%TYPE; -- 应缴费用表的id
  v_fy sfgl_yjfy.fy%TYPE; -- 应缴费用表的应缴费用
  v_yjfy sfgl_yjfy.yjfy%TYPE; -- 应缴费用表的已缴费用
  v_wjfy sfgl_yjfy.wjfy%TYPE; -- 应缴费用表的未缴费用
  p_sx sfgl_yjfy.wjfy%TYPE; --- 缴纳其他费用剩下金额

begin
  ---学费不为空并且大于0
  if p_xf is not null and p_xf >0 then
    SELECT t.YJFYID,t.fy,t.yjfy,t.wjfy into v_yjfyid,v_fy,v_yjfy,v_wjfy FROM sfgl_yjfy t WHERE t.yjyh = (
    SELECT xsid FROM sfgl_xsxx WHERE xh=p_xh) and t.xn=p_xn and t.fylx='1';
   --更新应缴费用的'已缴费用'、'未缴费用'字段
   --缴纳学费大于等于未缴费用
     if p_xf-v_wjfy>= 0 and v_wjfy >0 then  
     update sfgl_yjfy t set t.YJFY = t.fy,t.wjfy =0,t.modified_time = sysdate WHERE YJFYID = v_yjfyid;
      --插入一条缴费数据到缴费记录表
        insert into sfgl_jfjl
          (JFJLID,YJFYID,JFLX,JE,SFDY,modified_Time,modified_By,create_Time,create_By)
        values
          (Xl_Sfgl_Jfjl.NEXTVAL,v_yjfyid,'1',to_number(v_fy-v_yjfy),'0',sysdate,p_czr,sysdate,p_czr);
      --缴纳学费小于未缴费用
      elsif p_xf-v_wjfy< 0 and v_wjfy >0 then 
      update sfgl_yjfy t set t.YJFY = t.YJFY+p_xf,t.wjfy =t.wjfy-p_xf,t.modified_time = sysdate WHERE YJFYID = v_yjfyid;
      --插入一条缴费数据到缴费记录表
        insert into sfgl_jfjl
          (JFJLID,YJFYID,JFLX,JE,SFDY,modified_Time,modified_By,create_Time,create_By)
        values
          (Xl_Sfgl_Jfjl.NEXTVAL,v_yjfyid,'1',p_xf,'0',sysdate,p_czr,sysdate,p_czr);
      end if;
  end if;
  
  
   ---住宿费不为空并且大于0
   if p_zsf is not null and p_zsf >0 then
    SELECT t.YJFYID,t.fy,t.yjfy,t.wjfy into v_yjfyid,v_fy,v_yjfy,v_wjfy FROM sfgl_yjfy t WHERE t.yjyh = (
    SELECT xsid FROM sfgl_xsxx WHERE xh=p_xh) and t.xn=p_xn and t.fylx='2';
   --更新应缴费用的'已缴费用'、'未缴费用'字段
   --缴纳住宿费大于等于未缴费用
     if p_zsf-v_wjfy>= 0 and v_wjfy >0 then  
     update sfgl_yjfy t set t.YJFY = t.fy,t.wjfy =0,t.modified_time = sysdate WHERE YJFYID = v_yjfyid;
      --插入一条缴费数据到缴费记录表
        insert into sfgl_jfjl
          (JFJLID,YJFYID,JFLX,JE,SFDY,modified_Time,modified_By,create_Time,create_By)
        values
          (Xl_Sfgl_Jfjl.NEXTVAL,v_yjfyid,'1',to_number(v_fy-v_yjfy),'0',sysdate,p_czr,sysdate,p_czr);
      --缴纳住宿费小于未缴费用
      elsif p_zsf-v_wjfy< 0 and v_wjfy >0 then 
      update sfgl_yjfy t set t.YJFY = t.YJFY+p_zsf,t.wjfy =t.wjfy-p_zsf,t.modified_time = sysdate WHERE YJFYID = v_yjfyid;
      --插入一条缴费数据到缴费记录表
        insert into sfgl_jfjl
          (JFJLID,YJFYID,JFLX,JE,SFDY,modified_Time,modified_By,create_Time,create_By)
        values
          (Xl_Sfgl_Jfjl.NEXTVAL,v_yjfyid,'1',p_zsf,'0',sysdate,p_czr,sysdate,p_czr);
     end if;
  end if;
  
  
   ---医保费不为空并且大于0
   if p_ybf is not null and p_ybf >0 then
    SELECT t.YJFYID,t.fy,t.yjfy,t.wjfy into v_yjfyid,v_fy,v_yjfy,v_wjfy FROM sfgl_yjfy t WHERE t.yjyh = (
    SELECT xsid FROM sfgl_xsxx WHERE xh=p_xh) and t.xn=p_xn and t.fylx='3';
   --更新应缴费用的'已缴费用'、'未缴费用'字段
   --缴纳医保费大于等于未缴费用
     if p_ybf-v_wjfy>= 0 and v_wjfy >0 then  
      update sfgl_yjfy t set t.YJFY = t.fy,t.wjfy =0,t.modified_time = sysdate WHERE YJFYID = v_yjfyid;
      --插入一条缴费数据到缴费记录表
        insert into sfgl_jfjl
          (JFJLID,YJFYID,JFLX,JE,SFDY,modified_Time,modified_By,create_Time,create_By)
        values
          (Xl_Sfgl_Jfjl.NEXTVAL,v_yjfyid,'1',to_number(v_fy-v_yjfy),'0',sysdate,p_czr,sysdate,p_czr);
       --缴纳医保费小于未缴费用
       elsif p_ybf-v_wjfy< 0 and v_wjfy >0 then 
       update sfgl_yjfy t set t.YJFY = t.YJFY+p_ybf,t.wjfy =t.wjfy-p_ybf,t.modified_time = sysdate WHERE YJFYID = v_yjfyid;
      --插入一条缴费数据到缴费记录表
        insert into sfgl_jfjl
          (JFJLID,YJFYID,JFLX,JE,SFDY,modified_Time,modified_By,create_Time,create_By)
        values
          (Xl_Sfgl_Jfjl.NEXTVAL,v_yjfyid,'1',p_ybf,'0',sysdate,p_czr,sysdate,p_czr);
      end if;
  end if;
  
  
   ---其他费不为空并且大于0
   if p_qt is not null and p_qt >0 then
    p_sx:=p_qt;
    for rec_qtfy in (SELECT t.* FROM sfgl_yjfy t WHERE t.yjyh = (
                     SELECT xsid FROM sfgl_xsxx WHERE xh=p_xh) and t.xn=p_xn and t.fylx='4') loop      
        --更新应缴费用的'已缴费用'、'未缴费用'字段
        --缴纳其他费用大于等于未缴费用
        if p_sx-rec_qtfy.wjfy>= 0 and p_sx>0 and rec_qtfy.wjfy > 0 then  
        update sfgl_yjfy t set t.YJFY = t.fy,t.wjfy =0,t.modified_time = sysdate 
        WHERE t.yjfyid = rec_qtfy.yjfyid;
        --插入一条缴费数据到缴费记录表
          insert into sfgl_jfjl
            (JFJLID,YJFYID,JFLX,JE,SFDY,modified_Time,modified_By,create_Time,create_By)
          SELECT Xl_Sfgl_Jfjl.NEXTVAL,YJFYID,'1',rec_qtfy.fy-rec_qtfy.yjfy,'0',sysdate,p_czr,sysdate,p_czr
           FROM sfgl_yjfy WHERE yjfyid = rec_qtfy.yjfyid;
        --缴纳其他费用小于未缴费用
        elsif p_sx-rec_qtfy.wjfy< 0 and p_sx>0 and rec_qtfy.wjfy > 0 then
         update sfgl_yjfy t set t.YJFY = t.YJFY+p_sx,t.wjfy =t.wjfy-p_sx,t.modified_time = sysdate 
        WHERE t.yjfyid = rec_qtfy.yjfyid;
        --插入一条缴费数据到缴费记录表
          insert into sfgl_jfjl
            (JFJLID,YJFYID,JFLX,JE,SFDY,modified_Time,modified_By,create_Time,create_By)
          SELECT Xl_Sfgl_Jfjl.NEXTVAL,YJFYID,'1',p_sx,'0',sysdate,p_czr,sysdate,p_czr
           FROM sfgl_yjfy WHERE yjfyid = rec_qtfy.yjfyid;
        end if;
        p_sx :=p_sx-(rec_qtfy.fy-rec_qtfy.yjfy); --剩下费用
    end loop;
  end if;

exception
     when others then
       --o_errMsg:=o_errMsg||':程序运行出现内部错误,请联系管理员。'||dbms_utility.format_error_backtrace()||'---'||SQLCODE||'---'||SQLERRM;
       o_errMsg  := '执行失败';
       rollback;
end SFGL_XSJF;

 --摘自缴费

分享到:
评论

相关推荐

    asp.net学生管理系统文档

    (3) 采用SQL Server 2000数据库技术,将学生基本信息、班级信息、缴费信息、课程成绩等存储在不同的数据表内,实现信息分类管理,并通过编程技术动态改变数据信息。 (4) 通过编程对数据库相关数据表的访问,实现对...

    学生信息管理系统 SQL数据库

    以学生管理为主要内容,设计有关学生信息管理的数据库系统。要求:涵盖学生基本情况、学生成绩、奖惩、宿舍管理...包含触发器及存储过程,十个查询,需求分析、E-R图、数据字典、SQL Server数据库及脚本。表中有数据。

    高校新生录入系统

    第四个板块是缴费查询是学生入学时需要缴纳的费用明细,与教务处学生信息直接挂钩,既从教务处拿到学生ID以提供学生应缴费用,又通过缴费过程直接反馈给系统学生缴费情况,其中也包含了学生缴费时打印凭条等各种必要...

    ssm项目乡村研学旅行平台 (小程序.zip

    3. **互动教学**:在旅行过程中,教师可以通过小程序布置作业、发布通知,学生可以提交作业和分享体验。 4. **实地探索**:利用地图服务展示研学地点,增强学生的实地探索体验。 5. **文化传承**:介绍乡村的文化...

    021ssm-jsp-mysql贝儿米幼儿教育管理系统.zip(可运行源码+数据库文件+文档)

    个人中心、用户管理、学生信息管理、班级信息管理、缴费信息管理、幼儿园信息管理、教师信息管理、考勤信息管理、考勤申请管理、活动信息管理、就餐信息管理、管理员管理,用户;个人中心、学生信息管理、班级信息...

    基于SSM+Mysql的贝儿米幼儿教育管理系统(源码+论文+ppt+开发文档+演示视频).zip

    个人中心、用户管理、学生信息管理、班级信息管理、缴费信息管理、幼儿园信息管理、教师信息管理、考勤信息管理、考勤申请管理、活动信息管理、就餐信息管理、管理员管理,用户;个人中心、学生信息管理、班级信息...

    jspm贝儿米幼儿教育管理系统lw+ppt.rar

    个人中心、用户管理、学生信息管理、班级信息管理、缴费信息管理、幼儿园信息管理、教师信息管理、考勤信息管理、考勤申请管理、活动信息管理、就餐信息管理、管理员管理,用户;个人中心、学生信息管理、班级信息...

    百套毕设之-java(开发说明+正文+演示+源码)贝儿米幼儿教育管理系统.zip

    个人中心、用户管理、学生信息管理、班级信息管理、缴费信息管理、幼儿园信息管理、教师信息管理、考勤信息管理、考勤申请管理、活动信息管理、就餐信息管理、管理员管理,用户;个人中心、学生信息管理、班级信息...

    weixin107校园服务平台+ssm(源码+部署说明+演示视频+源码介绍+lw).rar

    MyBatis:一个持久层框架,它提供了一种半自动化的数据库映射方法,可以将SQL语句与Java对象映射起来,消除了手工设置参数以及获取结果集的繁琐过程。 前端技术:可能包括但不限于HTML, CSS, JavaScript以及流行的库...

Global site tag (gtag.js) - Google Analytics