sql >> Databáze >  >> RDS >> Oracle

Může procedura SQL vrátit tabulku?

Funkce PL/SQL může vrátit vnořenou tabulku. Pokud deklarujeme vnořenou tabulku jako typ SQL, můžeme ji použít jako zdroj dotazu pomocí funkce TABLE() .

Zde je typ a z něj vytvořená vnořená tabulka:

SQL> create or replace type emp_dets as object (
  2  empno number,
  3  ename varchar2(30),
  4  job varchar2(20));
  5  /

Type created.

SQL> create or replace type emp_dets_nt as table of emp_dets;
  2  /

Type created.

SQL> 

Zde je funkce, která vrací tuto vnořenou tabulku ...

create or replace function get_emp_dets (p_dno in emp.deptno%type)
    return emp_dets_nt
is
    return_value emp_dets_nt;
begin
    select emp_dets(empno, ename, job)
    bulk collect into return_value
    from emp
    where deptno = p_dno;
    return return_value;
end;
/

... a takto to funguje:

SQL> select * 
  2  from table(get_emp_dets(10))
  3  /

     EMPNO ENAME                          JOB
---------- ------------------------------ --------------------
      7782 CLARK                          MANAGER
      7839 KING                           PRESIDENT
      7934 MILLER                         CLERK

SQL> 

Typy SQL nám nabízejí velké množství funkcí a umožňují nám vytvářet poměrně sofistikovaná API v PL/SQL. Další informace .



  1. Oracle 12c Apex 4.2 ORA-24247 síťový přístup odepřen seznamem řízení přístupu (ACL)

  2. Převod čísla na slova v SQL

  3. Seskupení do intervalu 5 minut v časovém rozsahu

  4. Nasazení Django + Python 3 + PostgreSQL do AWS Elastic Beanstalk