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



我有一个表,我在其中使用基于输入参数的过程插入和更新数据。该过程从 Oracle APEX 表单调用。 该过程在甲骨文中工作正常。但是当我从 Apex 表单调用它时,我收到过程失败错误。经过分析,我发现这是因为从 Apex 表单和 Oracle 传递的值中的日期格式不匹配。

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

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

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

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 过程层,该层接受所有值作为字符串,使用一些常用实用程序验证和转换它们,然后调用主过程。

最新更新