【发布时间】:2018-01-28 12:59:36
【问题描述】:
我有一个表,我在其中使用基于输入参数的过程插入和更新数据。该过程是从 Oracle APEX 表单中调用的。 该过程在 Oracle 中运行良好。但是当我从 Apex 表单中调用它时,我会收到程序失败错误。经过分析,我发现这是由于 Apex 表单和 Oracle 中传递的值的日期格式不匹配造成的。
Date format in APEX FORM-->16-AUG-2017
Date format in ORACLE DB-->2017-08-17
在调用 Oracle 过程之前,我是否需要在 Apex 表单中格式化输入参数,或者我是否需要在过程中更改其格式。 请帮忙。
【问题讨论】:
-
您是否将日期作为数据类型
date或varchar2的参数传递?最好使用第一个,这样您就可以独立于任何日期格式。 -
嗨,我从顶点表单到调用数据库过程的参数是..#OWNER#.PROC_REF_ARTICLE_NBR_UPDINSERT(V_VALID_FROM_DT=>TO_CHAR(TO_DATE(:P293_VALID_FROM_DT,'DD-MON-YYYY'),'YYYY- MM-DD');
-
首先,Oracle DB 中没有所谓的日期格式。日期就是日期。您可能会觉得它们不同,因为您使用的客户端以这种方式格式化。您的过程中的“V_VALID_FROM_DT”参数是字符还是日期?您正在将其转换为 YYYY-MM-DD 格式的字符日期。如果参数是日期,那么 Oracle 可能不会将其隐式转换回日期,从而导致错误。
标签: oracle oracle-apex