【发布时间】:2019-10-08 03:47:47
【问题描述】:
我创建了一个程序来查找today 和expiry_date 之间的日期。
表格列格式已经是日期格式。
创建过程时创建成功且没有错误,但在执行过程中显示如下
ORA-01858:在需要数字的地方发现了一个非数字字符
ALTER SESSION SET NLS_DATE_FORMAT ='dd-mm-yyyy';
CREATE OR REPLACE PROCEDURE flow (
today IN DATE,
expiry_date IN DATE
) AS
BEGIN
FOR rec in (
SELECT *
FROM flow4
WHERE englishcalendar BETWEEN 'englishcalendar.today'
AND 'englishcalendar.expiry_date')
LOOP
dbms_output.put_line(rec.englishcalendar);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm);
END;
/
EXEC FLOW('01-02-2017','03-04-2018');
/
我也尝试在过程和过程执行中添加 to_date 但我得到了同样的错误 我也尝试过这个参考 Getting Error - ORA-01858: a non-numeric character was found where a numeric was expected
注意 englishcalendar 包含 2019 年的连续日期,日期格式为 'dd-mm-yyyy'
【问题讨论】:
-
WHERE englishcalendar BETWEEN 'englishcalendar.today' AND 'englishcalendar.expiry_date')似乎不正确。请分享表flow4的架构。 -
hr.flow4.englishcalendar.today(Schema ==> HR,flow4 ==> Table_name,englishcalendar ==> 列名和今天 ==> 过程 INPARAM)@AnkitBajpai
-
我的意思是表flow4的结构。