Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Отладка pipelined функций  [new]
Aduciicba
Member

Откуда:
Сообщений: 3
Здравствуйте!
Не получается запустить отладку на pipelined функциях, для возвращающих скалярное значение все ок. Почему-то даже в простейшей pipelined функции ругается на использование агрегатных функций.

Компилю для дебага вот такой простенький пакет:

заголовок
CREATE OR REPLACE 
PACKAGE PKG_TEST_DEBUG AS 

  cursor cur_dual is
  select *
  from dual;
  
  type t_dual IS TABLE OF cur_dual%ROWTYPE;
  
  function fnc_pipelined_dual RETURN t_dual PIPELINED;
  

END PKG_TEST_DEBUG;



тело

CREATE OR REPLACE
PACKAGE BODY PKG_TEST_DEBUG AS

  function fnc_pipelined_dual RETURN t_dual PIPELINED AS
    v_var VARCHAR(100);
  BEGIN
  
    select extract(hour from systimestamp) into v_var
    from dual;
    
    if v_var = 0 then
      v_var := 10;
    end if;
    
    FOR L IN cur_dual
    LOOP
      PIPE ROW (L);
    END LOOP;
  END fnc_pipelined_dual;

END PKG_TEST_DEBUG;


Ставлю брейкпоинт, пытаюсь вызвать отладку и получаю следующую ошибку:

ORA-06550: Строка 9, столбец 12:
PLS-00653: aggregate/table function are not allowed in PL/SQL scope
ORA-06512: на line 58

Vendor code 6550

Не понимаю на что ругается:( Помогите, пожалуйста, разобраться
26 июн 15, 01:25    [17818082]     Ответить | Цитировать Сообщить модератору
 Re: Отладка pipelined функций  [new]
-2-
Member

Откуда:
Сообщений: 15330
Aduciicba
Не понимаю
включи трассировку клиента и отладь свой отладчик.
26 июн 15, 01:47    [17818100]     Ответить | Цитировать Сообщить модератору
 Re: Отладка pipelined функций  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7431
Как функцию вызываешь-то? Из PL/SQL-ля? PL-функции вызываются толко из SQL.

select pl_function() from dual
26 июн 15, 01:51    [17818107]     Ответить | Цитировать Сообщить модератору
 Re: Отладка pipelined функций  [new]
Aduciicba
Member

Откуда:
Сообщений: 3
Relic Hunter
Как функцию вызываешь-то? Из PL/SQL-ля? PL-функции вызываются толко из SQL.

select pl_function() from dual


Не уточнила: работаю через SQL Developer, там при открытии пакета есть кнопочка debug, среда сама создает оболочку для вызова функции из пакета. Собственно кнопочкой и запускаю.

автор
включи трассировку клиента и отладь свой отладчик.


Не поняла как это +_+ Расскажите, пожалуйста, поподробней

К сообщению приложен файл. Размер - 128Kb
26 июн 15, 09:03    [17818365]     Ответить | Цитировать Сообщить модератору
 Re: Отладка pipelined функций  [new]
казинак
Member

Откуда:
Сообщений: 1273
Aduciicba,

сделайте или стащите с инета пакет для логирования с автономной транзакцией
нафтыкайте в своем коде отладочные вызовы
и вам будет пофик из какой IDE дебажить
например
http://www.java2s.com/Code/Oracle/Stored-Procedure-Function/Usestoredproceduretologmessage.htm

и в будущем это вам не раз пригодится
26 июн 15, 09:15    [17818379]     Ответить | Цитировать Сообщить модератору
 Re: Отладка pipelined функций  [new]
lamer2k600
Member

Откуда: Germany/Munich
Сообщений: 191
Aduciicba,

автор
PLS-00653: aggregate/table function are not allowed in PL/SQL scope


это значит что v_var := pipelined_func; так нельзя

надо что то типа

select pipelined_func from dual или select * from table(pipelined_func);
26 июн 15, 09:24    [17818406]     Ответить | Цитировать Сообщить модератору
 Re: Отладка pipelined функций  [new]
ArtNick
Member

Откуда:
Сообщений: 1227
Aduciicba,
Pipelined функции вызываются так
26 июн 15, 09:31    [17818432]     Ответить | Цитировать Сообщить модератору
 Re: Отладка pipelined функций  [new]
Aduciicba
Member

Откуда:
Сообщений: 3
оу, я как-то совсем упустила из виду как именно developer сделал отладочную оболочку для функции и, конечно, вызов неверен, Вы абсолютно правы +_+

автор
сделайте или стащите с инета пакет для логирования с автономной транзакцией
нафтыкайте в своем коде отладочные вызовы
и вам будет пофик из какой IDE дебажить

Спасибо за совет, обязательно попробую!

Всем большое спасибо за помощь! Буду исправляться :)
26 июн 15, 09:51    [17818523]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить