我有一个更新查询
Update configuration set comments='RUNNING'
WHERE config_name = 'BName' and to_date(config_value) <= sysdate and comments is null;
config值为VARCHAR 2(2000 CHAR),因为此表用于保存多种类型的配置。
config_value中的当前值是'03-MAY-23 01:41:31',并且上述查询在使用客户端运行时工作正常。但是当它是存储过程的一部分时,我会出现异常
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
2023-05-03T14:55:59.681+05:30 [APP/PROC/WEB/0] [OUT] ORA-06512: at "PKGtemp", line 2575
2023-05-03T14:55:59.681+05:30 [APP/PROC/WEB/0] [OUT] ORA-01830: date format picture ends before converting entire input string
2023-05-03T14:55:59.681+05:30 [APP/PROC/WEB/0] [OUT] ORA-06512: at "PKGTemp", line 2463
2023-05-03T14:55:59.681+05:30 [APP/PROC/WEB/0] [OUT] ORA-06512: at line 1
1条答案
按热度按时间aelbi1ox1#
您有一个包含日期/时间的字符串。你知道这种格式,但你不告诉DBMS,而是让它猜。一个会话猜测正确,一个猜测错误,因为这种猜测取决于会话设置。解决方案是(当然)指定转换的格式。由于涉及到月份名称,您还应该告诉DBMS使用的语言。
以下是
TO_DATE
的文档:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/TO_DATE.html下面是关于日期格式的文档:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Format-Models.html#GUID-DFB23985-2943-4C6A-96DF-DF0F664CED96