procedure中的失足之-----跟变量翻脸
2016-07-07 21:36
155 查看
小白工作有点迷糊,居然把1000条数据金额计算算法错了,
,摸摸被自己伤到的心脏,吸吸鼻子.....
-----------------------------------------------------------------------------------------------------------
代码功能:对1000条数据进行金额计算,并更新表
错误代码:
v_current_claim c_current_claim%ROWTYPE;
v_claim_ins_amt cfs_plan.insurant_amt%type;
v_claim_adm_amt cfs_plan.manage_amt%type;
v_claim_bofo_amt l_subrogation_plan.bofo_amt%type;
v_overdue_max_date cfs_plan.payment_due_date%TYPE ;
v_claim_min_date cfs_plan.payment_due_date%TYPE ;
v_flag Varchar2(1) := 'N'; begin
for v_subrogation_plan in c_subrogation_plan loop
v_claim_ins_amt := 0;
v_claim_adm_amt := 0;
v_claim_bofo_amt := 0;
FOR v_overdue_plan IN c_overdue_plan(v_subrogation_plan.acct_no,v_subrogation_plan.CLAIM_DATE) LOOP
v_claim_ins_amt := v_claim_ins_amt + v_overdue_plan.INSURANT_AMT;
v_claim_adm_amt := v_claim_adm_amt + v_overdue_plan.MANAGE_AMT;
IF v_overdue_plan.PAYMENT_DUE_DATE = v_subrogation_plan.claim_date THEN
v_flag := 'Y';
END IF;
END LOOP;
end;
错误分析:
这个for循环中的变量是每次都需要初始化,还是沿用上一个循环变量的结果,小白曾经犯错过两次!!两次都是以2~3个小时的代价才定位出来,这是多么难的问题吗?!搞不懂啊自己呀,既然记不得,那我从现在起3天每天打卡确保记忆深刻!
正确代码:
v_current_claim c_current_claim%ROWTYPE;
v_claim_ins_amt cfs_plan.insurant_amt%type;
v_claim_adm_amt cfs_plan.manage_amt%type;
v_claim_bofo_amt l_subrogation_plan.bofo_amt%type;
v_overdue_max_date cfs_plan.payment_due_date%TYPE ;
v_claim_min_date cfs_plan.payment_due_date%TYPE ;
v_flag Varchar2(1);
begin
for v_subrogation_plan in c_subrogation_plan loop
v_claim_ins_amt := 0;
v_claim_adm_amt := 0;
v_claim_bofo_amt := 0;
v_flag := 'N';
FOR v_overdue_plan IN c_overdue_plan(v_subrogation_plan.acct_no,v_subrogation_plan.CLAIM_DATE) LOOP
v_claim_ins_amt := v_claim_ins_amt + v_overdue_plan.INSURANT_AMT;
v_claim_adm_amt := v_claim_adm_amt + v_overdue_plan.MANAGE_AMT;
IF v_overdue_plan.PAYMENT_DUE_DATE = v_subrogation_plan.claim_date THEN
v_flag := 'Y';
END IF;
END LOOP;
end;
,摸摸被自己伤到的心脏,吸吸鼻子.....
-----------------------------------------------------------------------------------------------------------
代码功能:对1000条数据进行金额计算,并更新表
错误代码:
v_current_claim c_current_claim%ROWTYPE;
v_claim_ins_amt cfs_plan.insurant_amt%type;
v_claim_adm_amt cfs_plan.manage_amt%type;
v_claim_bofo_amt l_subrogation_plan.bofo_amt%type;
v_overdue_max_date cfs_plan.payment_due_date%TYPE ;
v_claim_min_date cfs_plan.payment_due_date%TYPE ;
v_flag Varchar2(1) := 'N'; begin
for v_subrogation_plan in c_subrogation_plan loop
v_claim_ins_amt := 0;
v_claim_adm_amt := 0;
v_claim_bofo_amt := 0;
FOR v_overdue_plan IN c_overdue_plan(v_subrogation_plan.acct_no,v_subrogation_plan.CLAIM_DATE) LOOP
v_claim_ins_amt := v_claim_ins_amt + v_overdue_plan.INSURANT_AMT;
v_claim_adm_amt := v_claim_adm_amt + v_overdue_plan.MANAGE_AMT;
IF v_overdue_plan.PAYMENT_DUE_DATE = v_subrogation_plan.claim_date THEN
v_flag := 'Y';
END IF;
END LOOP;
end;
错误分析:
这个for循环中的变量是每次都需要初始化,还是沿用上一个循环变量的结果,小白曾经犯错过两次!!两次都是以2~3个小时的代价才定位出来,这是多么难的问题吗?!搞不懂啊自己呀,既然记不得,那我从现在起3天每天打卡确保记忆深刻!
正确代码:
v_current_claim c_current_claim%ROWTYPE;
v_claim_ins_amt cfs_plan.insurant_amt%type;
v_claim_adm_amt cfs_plan.manage_amt%type;
v_claim_bofo_amt l_subrogation_plan.bofo_amt%type;
v_overdue_max_date cfs_plan.payment_due_date%TYPE ;
v_claim_min_date cfs_plan.payment_due_date%TYPE ;
v_flag Varchar2(1);
begin
for v_subrogation_plan in c_subrogation_plan loop
v_claim_ins_amt := 0;
v_claim_adm_amt := 0;
v_claim_bofo_amt := 0;
v_flag := 'N';
FOR v_overdue_plan IN c_overdue_plan(v_subrogation_plan.acct_no,v_subrogation_plan.CLAIM_DATE) LOOP
v_claim_ins_amt := v_claim_ins_amt + v_overdue_plan.INSURANT_AMT;
v_claim_adm_amt := v_claim_adm_amt + v_overdue_plan.MANAGE_AMT;
IF v_overdue_plan.PAYMENT_DUE_DATE = v_subrogation_plan.claim_date THEN
v_flag := 'Y';
END IF;
END LOOP;
end;
相关文章推荐
- session数据存入mysql
- 我的酷派大神1S 9976t的刷机过程
- 高斯模糊的实现方法
- 归并排序使用在c++STL实现
- 将Unity场景以Wavefront Obj格式导出
- Ant path 匹配原则 spring
- UOJ #31. 【UR #2】猪猪侠再战括号序列
- LoadRunner监控Tomcat的几种方法
- [置顶] spring整合cxf实现webservice发布
- IOS开发-单例模式安全写法
- 【数据库】临时表——基本知识
- 动态代理模式总结
- 能量项链(codevs 1154)
- vim:隆重推荐括号补全插件--auto-pairs
- Codevs (3657括号序列 )
- Android第一行代码笔记<2>
- Minimum Cut
- 2014多校联盟 第一场 Task 贪心
- Ubuntu 下打开txt文件乱码的方法
- Android第一行代码笔记<1>