create or replace procedure rebuild_sic86_wyl(pi_aac001 in number,
po_fhz out varchar2,
po_msg out varchar2) is
--1.根据账户类型来判断是本地的还是转入的,
--2.如果是本地的,
-- 写一个游标存放sic86.截止上年末缴费月数jzsnm,本年度缴费月数bn,本年累计缴费月数bnnj,
-- 从最小的年份开始,清空最小年费的下一年jzsnm,bnlj
-- update sic86 set jzsnm = null ,bnlj = null where aae001 >min(aae001)
-- update 最小年费下一年的 jzsnm = 最小年份bn+bnlj
v_count number(4);
v_zhlx sic86.zhlx%type;
v_aae001_min sic86.aae001%type;
v_aae001_max sic86.aae001%type;
v_nf sic86.aae001%type;
v_bn sic86.bn%type;
v_bnlj sic86.bnlj%type;
v_jzsnm sic86.jzsnm%type;
cursor c_zhlx_list is
select zhlx from sic86 where aac001 = pi_aac001;
begin
po_fhz := '1';
po_msg := '修正成功';
for rec_zhlx in c_zhlx_list loop
--选取最小年份和最大年份
select min(aae001)
into v_aae001_min
from sic86
where aac001 = pi_aac001;
select max(aae001)
into v_aae001_max
from sic86
where aac001 = pi_aac001;
if rec_zhlx.zhlx = '0' then
for nf in v_aae001_min .. v_aae001_max loop
--去最小年份的本年缴费月数
select bn
into v_bn
from sic86
where aac001 = pi_aac001
and aae001 = nf;
--取最小年份的本年累计月数
select bnlj
into v_bnlj
from sic86
where aac001 = pi_aac001
and aae001 = nf;
--最小年份下一年 v_nf
if (v_nf < v_aae001_max) then
v_nf := nf + 1;
else v_nf := nf;
end if; -- 修正1 最小年份下一年的的 jzsnm = 最小年度bn+最小年度bnlj
update sic86
set jzsnm =
(v_bn + v_bnlj)
where aac001 = pi_aac001
and aae001 = v_nf; select 1 into v_count from dual;--测试用,用完后注释掉
--取最小年份下一年的的截至上年末月数
select nvl(jzsnm,0)
into v_jzsnm
from sic86
where aac001 = pi_aac001
and aae001 = v_nf;
-- po_msg :=v_nf||'年份的jzsnm='||v_jzsnm;
--return; --调试用,正式用的时候注释掉
--去最小年份下一年的本年缴费月数
select bn
into v_bn
from sic86
where aac001 = pi_aac001
and aae001 = v_nf; --清空最小年份下一年的 截至上年末月数 和 本年累计(其实清空不情况无所谓,不影响)
/*
update sic86
set jzsnm = null, bnlj = null
where aac001 = pi_aac001
and aae001 = v_nf;
*/ -- 修正2 最小年份下一年的 本年累计月数 bnlj = 本年的jzsnm+本年的bn
update sic86
set bnlj =
(v_jzsnm + v_bn)
where aac001 = pi_aac001
and aae001 = v_nf;
end loop;
po_fhz := '1';
po_msg := '循环修正成功';
elsif rec_zhlx.zhlx = '1' then
po_fhz := '-1';
po_msg := '转入的暂不处理';
return;
end if;
end loop;
end;

  

循环调用修正sic86 2改后的(除了第一年有点诡异,其他年份可以正常修复)的更多相关文章

  1. 循环调用修正sic86

    create or replace procedure rebuild_sic86_wyl(pi_aac001 in number, po_fhz out varchar2, po_msg out v ...

  2. 循环调用spring的dao,数个过后无响应

    循环调用spring的dao,数个过后无响应 博客分类: spring daospringssh      最近遇到这么一个问题:前台按钮发送AJax请求到后台,后台是SSH框架.每点击一下按钮就发送 ...

  3. JSONP不支持循环调用

    问题描述 在jquery或zepto下,循环调用同一个jsonp ;i<;i++){ $.ajax({ url:'https://m.suning.com/authStatus?callback ...

  4. jmeter之regular expression extractor ,并循环调用匹配到的多个值

    jmeter之regular expression extractor 官方介绍:http://jmeter.apache.org/usermanual/regular_expressions.htm ...

  5. Python函数的循环调用

    def foo (): print 'runing foo' bar () def bar (): print 'runing bar' foo () bar() 直接上脚本,上面的脚本如果换成C语言 ...

  6. 使用jackson转json解决双向关联循环调用

    ITOO V1.0的开发算是告一段落了,现在是整理总结交接环节,在这个项目中常见的问题也该好好整理一下和大家分享了,这次主要介绍转json循环调用的问题. 一.问题背景 相信只要使用ORM映射实体关联 ...

  7. controller层负责创建类传递类给service;service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性;dao层负责数据的持久化

    controller层负责创建类传递类给service:service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性:dao层负责数据的持久化

  8. Oracle之带参存储过程(存储过程中for循环调用存储过程)

    --带参存储过程create or replace procedure testdate(v in number) is i number; begin i:=v; insert into test_ ...

  9. Sybase:循环调用存储过程

    Sybase:循环调用存储过程 一.日期循环 declare @c_count int declare @rq int --获取两个日期之间的天数 ,getdate()) begin ,),),),) ...

随机推荐

  1. HDU3496-Watch The Movie

    描述: New semester is coming, and DuoDuo has to go to school tomorrow. She decides to have fun tonight ...

  2. Git Version recovery command introduction - git reset

    reset命令有3种方式: git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息 git re ...

  3. ssh无密登录

    ssh登录一般两种方式: 1.密码登录 2.密钥验证无需密码 使用方式:1.生成密钥 2.将公钥追加到authorized_keys中,需要注意的是执行权限需为600,这里因而第一次添加使用的是> ...

  4. 快速注册Uber司机,兼职月入轻松过万

    Uber是世界领先的即时用车网络平台.当前部分中国城市,Uber司机只需每周完成70单,可获得7000元的激励制度回报司机,月收入近3万元.[加入条件]1. 车辆为本地牌照2. 车龄在5年以内3. 裸 ...

  5. C语言实验——一元二次方程Ⅱ

    C语言实验--一元二次方程Ⅱ Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 169  Solved: 131 [Submit][Status][Web ...

  6. Objective-c 协议(protocol)

    协议的作用类似地C++中对抽象基类的多重继承.类似于Java中的接口(interface)的概念.   协议是多个类共享方法的列表,协议中列出的方法在本类中并没有相应实现,而是别的类来实现这些方法. ...

  7. SQL Server(SSIS package) call .net DLL

    There are two method to call .net DLL in SQLSERVER. The first one is to use the sql clr but it has a ...

  8. TextBox控件只允许输入出生日期,并验证年龄不得小于18岁

    1.Body tag <form id="form1" runat="server"> <div> <asp:Label ID=& ...

  9. 法方总经理用的笔记本电脑&一体机拆开图。

    键盘上有三个字符,

  10. C#后台跳转

    后台跳转的方法: 1.js脚本 [不推荐使用] Context.Response.Write("<script language=javascript>window.locati ...