Ваш запрос работает в PL / SQL:
DECLARE
mon VARCHAR2(9);
BEGIN
SELECT to_char(add_months(sysdate,-1),'Month') INTO Mon from dual;
DBMS_OUTPUT.PUT_LINE( mon );
END;
/
Выходы:
March
Однако вам не нужно использовать SELECT
и может сделать это полностью в PL / SQL (без переключения контекста на SQL):
DECLARE
mon VARCHAR2(9);
BEGIN
mon := to_char(add_months(sysdate,-1),'Month');
DBMS_OUTPUT.PUT_LINE( mon );
END;
/
или, что еще лучше, указав параметры NLS в запросе, чтобы он будут давать те же ответы независимо от чьих-либо настроек в своем сеансе:
DECLARE
mon VARCHAR2(9);
BEGIN
mon := to_char(add_months(sysdate,-1),'Month','NLS_DATE_LANGUAGE=American');
DBMS_OUTPUT.PUT_LINE( mon );
END;
/
Если вы хотите сделать это в SQL (а не в контексте PL / SQL), тогда вы не можете использовать INTO
:
SELECT to_char(
add_months(sysdate,-1),
'Month',
'NLS_DATE_LANGUAGE=American'
) AS mon
FROM DUAL
Какие выходы:
| MON |
| :-------- |
| March |
db <> Fiddle здесь