2011-07-20 18 views
5

Oracle tablo değerli işlevine katılmak mümkün mü?Bir Oracle tablo değerli işlevine katılın

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

'GET_TRFRMENGMACHIENINFOT' ve' se' nelerdir kullanır ?. – Quassnoi

+0

Üzgünüm kötü kesim/yapıştır ... bunlar GET_TRFM ... fonksiyonunda kullanılan tiplerdir. Sadece çıktının gösterilmesi, tablo değerli fonksiyonundan kaynaklanır. – tafaju

cevap

11

Evet, yapabilirsiniz. Ben senin get_TrfrmEngMachineInfoT işlevi olmadığı için, ben ... Kendi koleksiyonu oluşturma ve SCOTT şema Belki

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, her problem için çözümün var +1, bundan daha fazlasını yapamazsın;) –

0

bu sizin için çalışabilir içinde EMP masaya katılmak olacak

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

Bu, table_name tablosundan her şeyi seçecek ve işlevin sonucunu yeni kümeye ekleyecektir.

myFunc

bazı kayıtları maç ve olursa ol table_name.OBJID alan ...

İlgili konular