问题描述
要求:-如果表没有记录,则需要插入,如果已经结束日期列仅更新基于条款的年数 (例如,如果条款年为10,则10*12 = 120个月,意味着 ..。10年需要添加到结束日期col。
当我执行下面的程序时,出现错误。请纠正并给我发送完美的程序。
提前感谢布罗。
CREATE TABLE USA_ASC11 ( POLICY_NO NUMBER, START_DATE DATE, TERMS_OF_YEAR NUMBER, frequ number, END_DATE DATE ) INSERT INTO USA_ASC11 VALUES(101, '2-5-2019' , 10 , 1, '22-5-2019' );复制
当我执行下面的程序时,出现错误。请纠正并给我发送完美的程序。
create or replace procedure I_U_Ploicy ( ip_start_date varchar2, ip_terms number, I_terms_of_year NUMBER ) Is v_pol number; v_strtdate date; v_terms number; v_enddate Date; p_frequ number; vnct number; Begin select POLICY_NO , START_DATE , TERMS_OF_YEAR ,add_months(to_date(ip_start_date, 'DD-MM-YYYY'),ip_terms*12)-1 as End_date INTO v_pol, v_strtdate, v_terms , v_enddate FROM usa_asc11 WHERE FREQU=p_frequ; if vnct =0 then update usa_asc11 set end_date = v_enddate where POLICY_NO = v_pol; else insert into policy_p1(POLICY_NO , START_DATE , TERMS_OF_YEAR, End_date, FREQU)values (1, '2-6-2019', 10, '2-6-2019' , 1); commit; End if; Exception When Others Then Raise_Application_Error(-20000, 'There is no data to be update'); End;复制
提前感谢布罗。
专家解答
是的,我也有问题
测试用例...
:-(
SQL> create or replace procedure I_U_Ploicy 2 ( 3 ip_start_date varchar2, ip_terms number, I_terms_of_year NUMBER 4 ) 5 Is 6 v_pol number; 7 v_strtdate date; 8 v_terms number; 9 v_enddate Date; 10 p_frequ number; 11 vnct number; 12 Begin 13 select POLICY_NO , START_DATE , TERMS_OF_YEAR ,add_months(to_date(ip_start_date, 'DD-MM-YYYY'),ip_terms*12)-1 14 as End_date 15 INTO v_pol, v_strtdate, v_terms , v_enddate FROM usa_asc11 WHERE FREQU=p_frequ; 16 if vnct =0 then 17 update usa_asc11 18 set end_date = v_enddate where POLICY_NO = v_pol; 19 else 20 insert into policy_p1(POLICY_NO , START_DATE , TERMS_OF_YEAR, End_date, FREQU)values 21 (1, '2-6-2019', 10, '2-6-2019' , 1); 22 commit; 23 End if; 24 Exception 25 When Others Then 26 Raise_Application_Error(-20000, 'There is no data to be update'); 27 End; 28 / Warning: Procedure created with compilation errors. SQL> sho err Errors for PROCEDURE I_U_PLOICY: LINE/COL ERROR -------- ----------------------------------------------------------------- 20/1 PL/SQL: SQL Statement ignored 20/13 PL/SQL: ORA-00942: table or view does not exist复制
测试用例...
:-(
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
549次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
472次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
451次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
445次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
445次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
438次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
414次阅读
2025-04-22 00:13:51
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
413次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
393次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
359次阅读
2025-04-17 17:02:24