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

Откуда: Киев
Сообщений: 32
Выполняю:
create or replace type DocLinksTable as table of number

CREATE OR REPLACE FUNCTION Pipe_Number
(pDocID NUMBER)
RETURN DocLinksTable pipelined AS
BEGIN
FOR i IN (SELECT id
FROM npi_Decision
CONNECT BY PRIOR id = document_id
START WITH id = pDocID) LOOP
pipe ROW (i);
END LOOP;
RETURN;
END;

После последнего блока выдаёт ошибку "PL/SQL: 00382 expression of wrong type"

Мне нужно вернуть в виде запроса данную функцию....
17 окт 06, 16:08    [3271807]     Ответить | Цитировать Сообщить модератору
 Re: Очень прошу помочь с PIPE  [new]
ГостЪ
Guest
Александр Экзаров
Выполняю:
create or replace type DocLinksTable as table of number

CREATE OR REPLACE FUNCTION Pipe_Number
(pDocID NUMBER)
RETURN DocLinksTable pipelined AS
BEGIN
FOR i IN (SELECT id
FROM npi_Decision
CONNECT BY PRIOR id = document_id
START WITH id = pDocID) LOOP
pipe ROW (i);
END LOOP;
RETURN;
END;

После последнего блока выдаёт ошибку "PL/SQL: 00382 expression of wrong type"

Мне нужно вернуть в виде запроса данную функцию....


ну ппц - функция возвращает один тип, а ты возвращаешь другой, обявил return DocLinksTable его же и возвращай!
17 окт 06, 16:20    [3271904]     Ответить | Цитировать Сообщить модератору
 Re: Очень прошу помочь с PIPE  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Пишите или:
pipe ROW (i.id);
или
create or replace type DocLinksTable as table of <типа запись>
17 окт 06, 16:22    [3271916]     Ответить | Цитировать Сообщить модератору
 Re: Очень прошу помочь с PIPE  [new]
Stax.
Guest
Не знаю наскоко это правильно в светле последних ...
create or replace type DocLinks objects (n number);
/
create or replace type DocLinksTable as table of DocLinks;
/
CREATE OR REPLACE FUNCTION Pipe_Number
(pDocID NUMBER)
RETURN DocLinksTable pipelined AS
BEGIN
FOR i IN
 (SELECT empno
  FROM emp
  CONNECT BY PRIOR empno=mgr
  START WITH mgr is null) LOOP
       pipe ROW (DocLinks(i.empno));
END LOOP;
RETURN;
END;
/
SQL> /

Function created.

SQL> select * from table(Pipe_Number(0));

        N
---------
     7839
     7566
     7788
     7876
     7902
     7369
     7698
     7499
     7521
     7654
     7844
     7900
     7782
     7934

14 rows selected.

......
stax
17 окт 06, 20:02    [3273494]     Ответить | Цитировать Сообщить модератору
 Re: Очень прошу помочь с PIPE  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
Stax.
Не знаю наскоко это правильно в светле последних ...
create or replace type DocLinks objects (n number);
/
create or replace type DocLinksTable as table of DocLinks;
/
stax


Why would you need object type?

SQL> create or replace type DocLinksTable as table of number;
  2  /

Type created.

SQL> CREATE OR REPLACE FUNCTION Pipe_Number
  2  RETURN DocLinksTable pipelined AS
  3  BEGIN
  4  FOR rec IN (SELECT empno FROM EMP CONNECT BY PRIOR empno = mgr START WITH mgr IS NULL) LOOP
  5    PIPE ROW(rec.empno);
  6  END LOOP;
  7  RETURN;
  8  END;
  9  /

Function created.

SQL> select * from table(Pipe_Number);

COLUMN_VALUE
------------
        7839
        7566
        7788
        7876
        7902
        7369
        7698
        7499
        7521
        7654
        7844

COLUMN_VALUE
------------
        7900
        7782
        7934

14 rows selected.

SQL> 


Problem with Александр Экзаров's code is, as error itself and ГостЪ noted, wrong type. Variable i is PL/SQL RECORD, while function expects a NUMBER. All Александр Экзаров needs is to replace:

pipe ROW (i);

with

pipe ROW (i.id);

SY.
17 окт 06, 20:49    [3273635]     Ответить | Цитировать Сообщить модератору
 Re: Очень прошу помочь с PIPE  [new]
Stax.
Guest
SY
Problem with Александр Экзаров's code is, as error itself and ГостЪ noted, wrong type. Variable i is PL/SQL RECORD, while function expects a NUMBER. All Александр Экзаров needs is to replace:

pipe ROW (i);

with

pipe ROW (i.id);

SY.

спасиб су, я ж сразу написал что не уверен
я ж здуру, создавал тип
......
stax
17 окт 06, 21:10    [3273694]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить