Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle 11g - cara mengembalikan catatan dari fungsi dengan tabel bergabung

Nah, Anda mungkin kehilangan tipe lain, berdasarkan MYTYPE .

Berikut ini contohnya (saya menggunakan skema Scott karena saya tidak memiliki tabel Anda). Saya telah menambahkan DEPTNO ke dalam MYTYPE sehingga saya dapat menggabungkan hasilnya (dikembalikan oleh fungsi) dengan EMP tabel.

Inilah yang Anda miliki:

SQL> create or replace type mytype as object
  2    (deptno number,
  3     dname  varchar2(20),
  4     loc    varchar2(20));
  5  /

Type created.

Inilah yang Anda lewatkan:

SQL> create or replace type mytab as table of mytype;
  2  /

Type created.

Fungsi:perhatikan baris 9:

SQL> create or replace function myfunc (p_in number) return mytab is
  2    v_dname varchar2(20);
  3    v_loc   varchar2(20);
  4  begin
  5    select dname, loc
  6      into v_dname, v_loc
  7      from dept
  8      where deptno = p_in;
  9    return mytab(mytype(p_in, v_dname, v_loc));
 10  end myfunc;
 11  /

Function created.

Pengujian:

SQL> select * from table(myfunc(10));

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
        10 ACCOUNTING           NEW YORK

SQL>
SQL> select e.ename, e.sal, m.dname, m.loc
  2  from emp e join table(myfunc(e.deptno)) m on m.deptno = e.deptno
  3  where e.deptno = 10
  4  order by m.dname, e.ename;

ENAME             SAL DNAME                LOC
---------- ---------- -------------------- --------------------
CLARK            2450 ACCOUNTING           NEW YORK
KING            10000 ACCOUNTING           NEW YORK
MILLER           1300 ACCOUNTING           NEW YORK

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan nama skema basis data saat menggunakan koneksi Oracle jdbc?

  2. Oracle Gabung vs Pilih lalu Sisipkan atau Perbarui

  3. Cara melihat konten Periksa Batasan di Oracle

  4. ORA-20001 di R12 Kumpulkan statistik skema pada 11g(FND_HISTOGRAM_COLS)

  5. Memahami segmen Lob (SYS_LOB) di Oracle?