ORA-01858: обнаружен нечисловой c символ, где ожидалось di git
Если - как вы сказали - i_date_one
и i_date_two
являются DATE
s, то они не могут вызвать эту ошибку. Столбец DATE
принимает только действительные даты.
Но, если это VARCHAR2
столбцы, которые должны содержать даты, тогда да - они могут содержать что-то, что не является допустимым date, например, 16.o6.2020
(o6
- это буква «о», а di git «шесть»), и это повысит ORA-01858
. Например:
SQL> declare
2 my_date date;
3 i_date_one varchar2(20) := '16.o6.2020';
4 begin
5 my_date := i_date_one;
6 end;
7 /
end;
*
ERROR at line 6:
ORA-01858: a non-numeric character was found where a numeric was expected
ORA-06512: at line 5
SQL>
В этом случае вы бы предпочли хранить даты в столбце типа DATE
. Поиск всех возможных неправильных случаев может занять некоторое время.
Я не думаю, что сравнение чего-либо с NULL
поднимает ORA-01858
; Я думаю, вы ошиблись.
SQL> declare
2 my_date date;
3 i_date_one varchar2(20) := '16.o6.2020';
4 begin
5 my_date := case when i_date_one is null then sysdate
6 else null
7 end;
8 end;
9 /
PL/SQL procedure successfully completed.
SQL>