Присоединиться к функции таблицы оракула - PullRequest
5 голосов
/ 20 июля 2011

Возможно ли присоединение к табличной функции Oracle?

SELECT 
   *
FROM 
  SOME_TABLE a
INNER JOIN 
  TABLE(GET_TABLE_LIST()) b ON = a.COL_A = b.COL_A

Ответы [ 2 ]

11 голосов
/ 20 июля 2011

Можно, да.Поскольку у меня нет вашей функции get_TrfrmEngMachineInfoT, я создам свою собственную коллекцию и присоединю ее к таблице EMP в схеме SCOTT

SQL> create or replace type typ_person
  2      as object (
  3        person_id number,
  4        person_name varchar2(30)
  5      );
  6  /

Type created.

SQL> create or replace type tbl_person
  2    as table of typ_person;
  3  /

Type created.

SQL> ed
Wrote file afiedt.buf

  1  create or replace function get_person_list
  2    return tbl_person
  3  is
  4    l_people tbl_person;
  5  begin
  6    select typ_person( empno, ename )
  7      bulk collect into l_people
  8      from emp;
  9    return l_people;
 10* end;
SQL> /

Function created.

SQL> select p.*
  2    from emp e
  3         join table( get_person_list() ) p on (p.person_id = e.empno);

 PERSON_ID PERSON_NAME
---------- ------------------------------
      7623 PAV
      7369 smith
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7876 ADAMS
      7900 SM0
      7902 FORD
      7934 MILLER
      1234 FOO

16 rows selected.
0 голосов
/ 22 сентября 2015

Может быть, это может сработать для вас ...

SELECT table_name.*, myFunc(table_name.OBJID) as new_field_name from table_name

Это выберет все из таблицы table_name и добавит результат функции в новый набор.

myFunc использует поле table_name.OBJID, чтобы сопоставить некоторые записи и делать что угодно ...

...