Join to an oracle table valued function Join to an oracle table valued function oracle oracle

Join to an oracle table valued function


You can, yes. Since I don't have your get_TrfrmEngMachineInfoT function, I'll create my own collection and join it to the EMP table in the SCOTT schema

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> edWrote 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 FOO16 rows selected.


Maybe this can work for you...

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

That will select everything from the table_name table and add the result of the function in to the new set.

myFunc uses table_name.OBJID field to match some records and do whatever...


SELECT a.*, b.*from table_name a cross join table ( myFunc(a.id) ) b