08.06.2010 13:17
Vlad
 
Рисую новую печатную форму для расходной накладной ТОРГ-2. Нужно определить номер и дату последней накладной от поставщика.
Создал вычисляемый столбец:
Код:
   function CF_Date_NaclFormula return Char is
Date_Nacl char(70);
begin
  Select id ||' от ' ||to_char(createdat,'DD')||' '||decode(to_char(createdat,'MM'),1,'января',2,'февраля',3,'марта',4,'апреля',5,'мая',6,
'июня',7,'июля',8,'августа',9,'сентября',10,'октября',11,'ноября',12,'декабря')||' '||to_char(createdat,'YYYY')|| ' года' into Date_Nacl
   FROM (SELECT A2.CREATEDAT,
               A2.ID,
               A2.LOCATIONTO,
               ROW_NUMBER() OVER(PARTITION BY A2.CLIENTINDEX ORDER BY A2.CREATEDAT DESC) RN
         FROM SUPERMAG.SMDOCUMENTS A2       
         WHERE A2.OPCODE=0
	       AND A2.USEROP=80
               AND A2.DOCSTATE = 3
               AND A2.CREATEDAT > TO_DATE('01.01.2006')
	       AND A2.CREATEDAT<=(select createdat from smdocuments where id=:p_id     and doctype=:p_doctype)
               AND A2.LOCATIONTO = (select locationfrom from smdocuments where id=:p_id and doctype=:p_doctype)
               AND A2.DOCTYPE = 'WI'
               AND A2.CLIENTINDEX = (select CLIENTINDEX from smdocuments where id=:p_id and doctype=:p_doctype))
 WHERE RN = 1;
  return Date_Nacl;
end;
Но при компиляции формулы выдается ошибка на строке:
Код:
ROW_NUMBER() OVER(PARTITION BY A2.CLIENTINDEX ORDER BY A2.CREATEDAT DESC) RN
"Встретился сивол "(" в то время как ожидалось одно из следующих, from"

Хотя если запустить этот же запрос в sqlplus или toad, то он отрабатывает без ошибок.
Версия oracle 8.1.6
Может что подскажите?
08.06.2010 14:02
Mtirt
 
Аналитические функции в PL/SQL не работают...
08.06.2010 14:28
Vlad
 
А если эту формулу сохранить как функцию в БД что то вроде :
CREATE OR REPLACE FUNCTION SUPERMAG.DATE_NACL, а эту функцию уже вызывать из отчета?
08.06.2010 14:49
Vlad
 
Попробовал - та же ошибка, хотя на oracle 9i функция создолась и была откомпелированна. Странно, вроде в oracle 8i есть потдержка аналитических функций... Буду думать ((
10.06.2010 16:53
Vlad
 
В связи с этим:
Цитата:
Mtirt Аналитические функции в PL/SQL не работают...
Решил сделать через sql запрос (кнопка на панели инструментов рядом с pl-sql) - все заработалаю А вот почему функция в базе не компелируется в 8i, а в 9i компилируется - так и не разобрался, да и фиг с ним, со временем все равно на 9-ку перейду.
Спасибо всем откликнувшимся!
11.06.2010 11:51
kadr
 
Цитата:
Vlad В связи с этим:

Решил сделать через sql запрос (кнопка на панели инструментов рядом с pl-sql) - все заработалаю А вот почему функция в базе не компелируется в 8i, а в 9i компилируется - так и не разобрался, да и фиг с ним, со временем все равно на 9-ку перейду.
Спасибо всем откликнувшимся!
Не просто же номер версии поднимают, исправляют ошибки, вносят новые фичи и возможности, 8-ка просто не знает о таком синтаксисе
Часовой пояс GMT +3, время: 04:08.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.