Это, кажется, глупый вопрос, однако я все равно попробую удачу здесь. См ниже блока кода, вы увидите NEXT_DAY принимает как 1 и «воскресенье» в качестве аргумента в ВЫБРАТЬ заявление, но в DBMS_OUTPUT.PUT_LINE только «воскресенье», и бросает ошибку 1 - «ORA-01846: недействительный день недели ».NEXT_DAY в DBMS_OUTPUT.PUT_LINE
Если я поставил «воскресенье», он работает. Что-нибудь мне здесь не хватает?
declare
wday varchar(10);
begin
select to_char(next_day(sysdate,1),'Day') into wday from dual; -- <== working with 1
dbms_output.put_line (wday);
select to_char(next_day(sysdate,'Sunday'),'Day') into wday from dual; -- <== working with 'Sunday'
dbms_output.put_line (wday);
--dbms_output.put_line (to_char(next_day(sysdate,1),'Day')); -- <== not working with 1
dbms_output.put_line (to_char(next_day(sysdate,'Sunday'),'Day')); -- <== working with 'Sunday'
end;
/
PS: Моя конфигурация NLS: 1 = воскресенье
Что такое «NLS_DATE_LANGUAGE»? –
Все по умолчанию: Америка/Америка. – Vishal
Попробуйте простое изменение 'declare wday varchar2 (20)'. Это сработало для меня. Без этого я получил «ORA-06502: PL/SQL: числовая или значащая ошибка: слишком строчный буфер символьной строки». Мой «NLS_DATE_LANGUAGE» установлен в «POLISH», поэтому, например, «MONDAY» - «PONIEDZIAŁEK». Может быть, это проблема или какая-то подсказка? –