日期选择器无效编号

时间:2018-12-03 14:41:59

标签: oracle-apex

在我的应用程序中,我有一个页面,用户可以在该页面上通过日期选择器选择日期。该日期应以varchar2(50)的形式存储在名为“ TASK_END_DATE”的列中。
因为在此页面上,已经有一个过程可以在我的表中存储一些其他输入的信息,所以日期选择器必须来自源“ Database_Column”。
但是现在我的问题是,我在整理页面时会遇到此错误,而且我完全不知道如何解决它。

ORA-01722:无效的数字

联系您的应用程序管理员。有关此事件的详细信息,可通过调试ID“ 14280”获得。 技术信息(仅对开发人员可见)

is_internal_error: false
ora_sqlcode: -1722
ora_sqlerrm: ORA-01722: invalid number
component.type: APEX_APPLICATION_PAGE_PROCESS
component.id: 30555528155357856
component.name: Fetch Row from SEEXML_TASKS
error_backtrace:

ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_SQL", line 1707
ORA-06512: at "APEX_180100.WWV_FLOW_DYNAMIC_EXEC", line 2360
ORA-06512: at "APEX_180100.WWV_FLOW_DYNAMIC_EXEC", line 1406
ORA-06512: at "APEX_180100.WWV_FLOW_DML", line 827
ORA-06512: at "APEX_180100.WWV_FLOW_PROCESS_NATIVE", line 556
ORA-06512: at "APEX_180100.WWV_FLOW_PROCESS_NATIVE", line 1157
ORA-06512: at "APEX_180100.WWV_FLOW_PLUGIN", line 2451
ORA-06512: at "APEX_180100.WWV_FLOW_PROCESS", line 201

error_statement:

begin begin  select "TASK_LATEST_DELIVERY","TASK_STATUS_FLAG","LATEST_MANIPULATOR",to_char("TASK_END_DATE", :p$_format_mask1),"TASK_NAME","TASK_PARTNER","TASK_ID","TASK_STATUS","TASK_CREATOR","TASK_MASTERID","INITIAL_ORDER_NUMBER","INITIAL_REQUESTER","TASK_DEV_COMMENT","TASK_PROJECT_ENTRY" into wwv_flow.g_column_values(1),wwv_flow.g_column_values(2),wwv_flow.g_column_values(3),wwv_flow.g_column_values(4),wwv_flow.g_column_values(5),wwv_flow.g_column_values(6),wwv_flow.g_column_values(7),wwv_flow.g_column_values(8),wwv_flow.g_column_values(9),wwv_flow.g_column_values(10),wwv_flow.g_column_values(11),wwv_flow.g_column_values(12),wwv_flow.g_column_values(13),wwv_flow.g_column_values(14) from "SEEXML_TASKS" where "TASK_ID" = :p_rowid; end;
end;

如果我不选择“数据库列”作为源,它会很好地工作,但不会更新表中的新值。
因此,也许有人建议如何在流程中使用页面项而不将其源设置为“数据库列”? 我将不胜感激任何可以解决我问题的建议!
干杯!

1 个答案:

答案 0 :(得分:0)

如果TASK_END_DATE是VARCHAR2,则表达式to_char("TASK_END_DATE", :p$_format_mask11)的结果为“ ORA-01722无效数字”。

to_char期望datenumber。由于您提供了varchar2,因此必须首先将字符串隐式转换为数字,并且ORA-01722失败。

建议使用DATE而不是VARCHAR2类型创建需要存储日期值的表列。然后,您可以使用to_char将其转换为字符串格式,以APEX格式使用。