循环调用修正sic86 2改后的(除了第一年有点诡异,其他年份可以正常修复)
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改后的(除了第一年有点诡异,其他年份可以正常修复)的更多相关文章
- 循环调用修正sic86
create or replace procedure rebuild_sic86_wyl(pi_aac001 in number, po_fhz out varchar2, po_msg out v ...
- 循环调用spring的dao,数个过后无响应
循环调用spring的dao,数个过后无响应 博客分类: spring daospringssh 最近遇到这么一个问题:前台按钮发送AJax请求到后台,后台是SSH框架.每点击一下按钮就发送 ...
- JSONP不支持循环调用
问题描述 在jquery或zepto下,循环调用同一个jsonp ;i<;i++){ $.ajax({ url:'https://m.suning.com/authStatus?callback ...
- jmeter之regular expression extractor ,并循环调用匹配到的多个值
jmeter之regular expression extractor 官方介绍:http://jmeter.apache.org/usermanual/regular_expressions.htm ...
- Python函数的循环调用
def foo (): print 'runing foo' bar () def bar (): print 'runing bar' foo () bar() 直接上脚本,上面的脚本如果换成C语言 ...
- 使用jackson转json解决双向关联循环调用
ITOO V1.0的开发算是告一段落了,现在是整理总结交接环节,在这个项目中常见的问题也该好好整理一下和大家分享了,这次主要介绍转json循环调用的问题. 一.问题背景 相信只要使用ORM映射实体关联 ...
- controller层负责创建类传递类给service;service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性;dao层负责数据的持久化
controller层负责创建类传递类给service:service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性:dao层负责数据的持久化
- Oracle之带参存储过程(存储过程中for循环调用存储过程)
--带参存储过程create or replace procedure testdate(v in number) is i number; begin i:=v; insert into test_ ...
- Sybase:循环调用存储过程
Sybase:循环调用存储过程 一.日期循环 declare @c_count int declare @rq int --获取两个日期之间的天数 ,getdate()) begin ,),),),) ...
随机推荐
- java生成随机字符串
学习java comparable特性时候,定义如下Student类,需要需要随机添加学生姓名以及学号和成绩,这是java如何随机生成名字,根据我的查询,我找到目前java库支持两种方法. 1. or ...
- 03-C语言编码规范和变量
目录: 一.C语言的编码规范 二.变量 三.浮点型float 四.变量名命名规则 五.变量作用域与生命周期 回到顶部 一.C语言的编程规范 1 语句可以分开放在任意位置 2 空格可以让代码更清晰 3 ...
- IOS 页面之间的传值(主讲delegate)
IOS的Delegate,通俗一点说就是页面之间的传值. 总结一下现在知道的IOS页面之间传值的方式有三种 1.使用NSNotification发送通知的传值 主要是通过NSNotificationC ...
- JQuery 限制文本框只能输入数字和小数点
$(function(){ /*JQuery 限制文本框只能输入数字*/ $(".NumText").keyup(function(){ $(this).val($(this).v ...
- 挺有意思的Blog
http://blog.csdn.net/dawanganban/article/details/19925449 http://www.syslog.org/ https://baoz.net/li ...
- Json.Net系列教程 4.Linq To JSON
原文 Json.Net系列教程 4.Linq To JSON 更改历史 2013-05-31 添加一个FAQ 一.Linq to JSON是用来干什么的? Linq to JSON是用来操作JSO ...
- activemq下activemq.bat不能启动
今天下载了一个apache-activemq-5.5.0-bin.rar解压缩后双击/bin目录下的activemq.bat批处理文件发现启动窗口一闪而过无法启动,最后找到原因是因为在环境变量-系统变 ...
- 基于Visual C++2013拆解世界五百强面试题--题7-链表的各种操作
请用C实现一个链表,实现链表的查找,逆置,替换,删除,添加,清空,创建. 查找.替换和删除.添加里面都会用到遍历链表的操作,所以重点在于遍历, 链表的逆置和清空考虑到效率,我们可以用递归实现, 至于创 ...
- SPOJ1811最长公共子串问题(后缀自动机)
题目:http://www.spoj.com/problems/LCS/ 题意:给两个串A和B,求这两个串的最长公共子串. 分析:其实本题用后缀数组的DC3已经能很好的解决,这里我们来说说利用后缀自动 ...
- Proving Equivalences(加多少边使其强联通)
Proving Equivalences Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...