эта функция правда PL / SQL? - PullRequest
1 голос
/ 28 июня 2010

используется ли он в правильной форме в PL / SQL?

SELECT ename
        ,hiredate
       , TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY') AS "Révision" 
FROM emp

ТНХ

Ответы [ 4 ]

2 голосов
/ 28 июня 2010

Возможно, это не PL / SQL, но (почти) допустимый Oracle SQL.Единственная проблема, которую я вижу, состоит в том, что 'Le' в модели формата должно быть заключено в кавычки, чтобы он работал, поскольку это просто случайный текст, для которого Oracle иначе попытался бы найти какое-то значение.

SELECT
  ename, 
  hiredate, 
  TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'"Le" DD MONTH YYYY') 
FROM emp
2 голосов
/ 28 июня 2010

Это не PL / SQL (который является процедурным расширением Oracle для SQL).

ADD_MONTHS - это, я полагаю, специфичный для Oracle SQL.

Не уверен, что использование TRUNC для удаления части дня / месяца в дате / времени также зависит от Oracle.

2 голосов
/ 28 июня 2010

Это утверждение является допустимым 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
    .....
1 голос
/ 28 июня 2010

Если вы имеете в виду совместимость с SQL99 или SQL92, используйте валидатор http://developer.mimer.com/validator/parser99/index.tml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...