order by .. rows between unbounded preceding and current row

деятель
Дата: 01.06.2006 13:37:33
А чего, оконные функции в PL/SQL в девятке не того?

SQL> select banner from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
PL/SQL Release 9.2.0.6.0 - Production
CORE	9.2.0.6.0	Production

SQL> create table t1 as
  2  select object_id,
  3         sum(object_id) over(order by created ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) Sum_Object_ID,
  4         created
  5    from all_objects
  6   where rownum < 10
  7  /

Table created

SQL> create or replace procedure t1_proc is
  2  begin
  3    insert into t1
  4      select object_id,
  5             sum(object_id) over(order by created ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) Sum_Object_ID,
  6             created
  7        from all_objects
  8       where rownum < 10
  9  end;
 10  /

Warning: Procedure created with compilation errors
Compilation errors for PROCEDURE BEELINE.T1_PROC

Error: PL/SQL: ORA-00905: missing keyword
Line: 5
Text: sum(object_id) over(order by created rows between unbounded preceding and current row) Sum_Object_ID,

ЗЫ: Самое главное, чего делать-то? Патчить до 9.2.0.7 или сразу до 10.2? Боюсь, админы не поймут :))
dmidek
Дата: 01.06.2006 13:41:57
Да, похоже не нравится...
А Вам не подойдет вариант

create or replace procedure t1_proc is
    begin
      insert into t1
        select object_id,
               sum(object_id) over(order by created) Sum_Object_ID,
               created
          from all_objects
         where rownum < 10
    end;
   /
andrey_anonymous
Дата: 01.06.2006 13:42:31
Как минимум поставить запяточие после зепроса.
Если не поможет - упихать в execute immediate
orawish
Дата: 01.06.2006 13:43:11
было уже..
с матюками меняем PRECEDING AND CURRENT ROW на сортировку в другом направлении и соотв. between current row and following
и терпим до десятки
деятель
Дата: 01.06.2006 13:51:42
Спасибо всем. В данном случае выбрал простейшее
sum(object_id) over(order by created) Sum_Object_ID
Execute immediate тоже проверил, работает. Учту на будущее.