在oracle sql中运行proc时出现ORA-01830异常

zengzsys  于 2023-05-06  发布在  Oracle
关注(0)|答案(1)|浏览(271)

我有一个更新查询

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
aelbi1ox

aelbi1ox1#

您有一个包含日期/时间的字符串。你知道这种格式,但你不告诉DBMS,而是让它猜。一个会话猜测正确,一个猜测错误,因为这种猜测取决于会话设置。解决方案是(当然)指定转换的格式。由于涉及到月份名称,您还应该告诉DBMS使用的语言。

to_date(config_value, 'dd-MON-rr hh24:mi:ss', 'NLS_DATE_LANGUAGE = AMERICAN')

以下是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

相关问题