2011-07-20 10 views
5

Czy można dołączyć do funkcji wycenionej w tabeli Oracle?Przyłącz się do funkcji tabeli wycenianej o wartości

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

Jakie są 'GET_TRFRMENGMACHIENINFOT' i' se' ?. – Quassnoi

+0

Przepraszam złe wycinanie/wklejanie. Są to typy używane w funkcji GET_TRFM .... Po prostu pokazuje się, że wynik będzie pochodził z funkcji wycenionej w tabeli. – tafaju

Odpowiedz

11

Możesz, tak. Ponieważ nie mam swoją funkcję get_TrfrmEngMachineInfoT, będę tworzyć własną kolekcję i dołączyć go do stołu EMP w schemacie

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

Justin masz rozwiązanie dla każdego problemu +1, nie możesz zrobić więcej;) –

0

Może to praca dla ciebie SCOTT ...

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

To wszystko wybierze od tabeli table_name i doda wynik działania do nowego zestawu.

myFunc wykorzystuje table_name.OBJID pole pasujące pewne zapisy i zrobić cokolwiek ...

Powiązane problemy