【发布时间】:2013-12-24 13:32:49
【问题描述】:
我有 period=3day/week/month 、 start_date 和 end_date。当我选择 start_date 例如。 2013 年 12 月 12 日.. 然后我想验证 end_date 大约是 start_date + period(3day) + 2day(default).. 所以 end_date 将是 16-DEC-2013.. 我在这里写了代码..
declare
v_period date;
begin
if :P104_TYPE_PERIOD = 'DAY' then
v_period := ((TO_DATE(:P104_START_DATE, 'DD-MON-YYYY')+(nvl(to_number(replace(:P104_COURSE_PERIOD,',', '0'))),0)))+2);
end if;
if :P104_TYPE_PERIOD = 'WEEK' then
v_period := ((TO_DATE(:P104_START_DATE, 'DD-MON-YYYY')+(nvl(to_char(to_number(replace(:P104_COURSE_PERIOD,',', '0'))),0)*7))+2);
end if;
if :P104_TYPE_PERIOD = 'MONTH' then
v_period := ((TO_DATE(:P104_START_DATE, 'DD-MON-YYYY')+(nvl(to_char(to_number(replace(:P104_COURSE_PERIOD,',', '0'))),0)*30))+2);
end if;
if v_period < :P104_END_DATE then
return false;
end if;
end;
运行页面后,出现以下消息:
Error processing validation.
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
有谁知道如何解决这个问题? 提前谢谢!
【问题讨论】:
-
period=3day?您不能将3day转换为数字,这会导致转换错误。 -
其实那 3 天我使用了不同的项目.. P104_COURSE_PERIOD=3 P104_TYPE_PERIOD=DAY.. 这就是我放在那里的原因,
-
如果 :P104_TYPE_PERIOD = 'MONTH' 那么 v_period := ((TO_DATE(:P104_START_DATE, 'DD-MON-YYYY')+(nvl(to_char(to_number(replace(:P104_COURSE_PERIOD,',' , '0'))),0)*30))+2);如果结束;
-
能否请您先在 BEGIN 块中打印所有以 ':' 开头的主机变量并显示输出。?
-
:P104_COURSE_PERIOD = 3
标签: javascript oracle jquery oracle11g oracle10g