由于日期格式,从Apex表单调用Oracle SP失败

时间:2017-08-20 09:08:12

标签: oracle oracle-apex

我有一个表,我使用基于输入参数的过程插入和更新数据。该过程从Oracle APEX表单调用。 该过程在Oracle中运行良好。但是当我从Apex表单调用它时,我得到过程失败错误。在分析中,我发现这是因为从Apex表单和Oracle传递的值中的日期格式不匹配。

Date format in APEX FORM-->16-AUG-2017

Date format in ORACLE DB-->2017-08-17

在调用Oracle Procedure之前,是否需要以Apex形式格式化输入参数,或者我是否需要在过程中更改其格式。 请帮忙。

1 个答案:

答案 0 :(得分:1)

APEX将所有项目值视为字符串,例如'16 -AUG-2017' 。如果您调用的过程需要DATE参数,则需要在调用之前转换该值。这对许多人来说都是违规的,但在APEX应用程序中,我很乐意使用隐式转换:

myproc (p_date => to_date(:P1_DATE));

无论APEX中的日期格式设置如何,这都将有效。另一种方法是使用流行的APEX日期格式执行显式转换,如下所示:

myproc (p_date => to_date(:P1_DATE, :APP_NLS_DATE_FORMAT));

但这对我来说似乎是多余的。

当然,如果P1_DATE中的值不是当前APEX日期格式的有效日期,则您的过程调用将失败,因此您应在调用过程之前验证该过程。例如,您可以使用APEX验证来执行此操作。另一种方法是让APEX过程层接受所有值作为字符串,使用一些常用实用程序验证和转换它们,然后调用主过程。