Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy procedura SQL może zwrócić tabelę?

Funkcja PL/SQL może zwrócić tabelę zagnieżdżoną. Pod warunkiem, że zadeklarujemy zagnieżdżoną tabelę jako typ SQL, możemy użyć jej jako źródła zapytania, używając funkcja TABLE() .

Oto typ i zbudowana z niego zagnieżdżona tabela:

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> 

Oto funkcja, która zwraca tę zagnieżdżoną 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;
/

... i tak to działa:

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 oferują nam ogromną funkcjonalność i pozwalają nam budować całkiem wyrafinowane API w PL/SQL. Dowiedz się więcej .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. problem z plikami apex_application_temp_files

  2. ORA-01830:obraz w formacie daty kończy się przed konwersją całego ciągu wejściowego / Wybierz sumę, w której zapytanie o datę

  3. SQL:AVG z wartościami NULL

  4. Zgodność wersji Oracle Client i ODP.NET

  5. Jak korzystać z funkcji xmlconcat w Oracle?