sql >> Database teknologi >  >> RDS >> Oracle

Kan en SQL-procedure returnere en tabel?

En PL/SQL-funktion kan returnere en indlejret tabel. Forudsat at vi erklærer den indlejrede tabel som en SQL-type, kan vi bruge den som kilden til en forespørgsel ved at bruge funktionen TABLE() .

Her er en type og en indlejret tabel bygget ud fra den:

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> 

Her er en funktion, som returnerer den indlejrede tabel ...

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;
/

... og sådan fungerer det:

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

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

SQL> 

SQL Types tilbyder os en hel del funktionalitet og giver os mulighed for at bygge ganske sofistikerede API'er i PL/SQL. Få mere at vide .



  1. vælg aggregatfunktion og alle andre kolonner

  2. Hvordan indstiller man forbindelsestimeout i groovy sql?

  3. Behov for at indsætte poster til oracle-tabellen til planlægning

  4. FLOOR() Eksempler i SQL Server