Это утверждение является допустимым Oracle SQL: вы добавляете шесть месяцев к hiredate
, а затем возвращаете первый день этого месяца в определенном формате.
Однако, если вы хотите использовать его в PL / SQL, вам нужно вернуть его в некоторые переменные:
declare
l_ename emp.ename%type;
l_hiredate emp.hiredate%type;
l_revision varchar2(20);
begin
SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY')
INTO l_ename
, l_hiredate
, l_revision
FROM emp;
end;
Конечно, скорее всего, у вас более одногозапись в вашей таблице EMP.Поэтому вам нужно либо ограничить запрос на возврат одной строки, либо использовать переменную, способную обрабатывать несколько строк, например коллекцию PL / SQL или курсор:
....
for emp_recs in ( SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY')
FROM emp )
loop
.....