Oracle
 sql >> база данни >  >> RDS >> Oracle

Може ли SQL процедура да върне таблица?

PL/SQL функция може да върне вложена таблица. При условие, че декларираме вложената таблица като SQL тип, можем да я използваме като източник на заявка, използвайки функцията TABLE() .

Ето един тип и вложена таблица, изградена от него:

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> 

Ето функция, която връща тази вложена таблица...

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

... и ето как работи:

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

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

SQL> 

Типовете SQL ни предлагат голяма функционалност и ни позволяват да създаваме доста сложни API в PL/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. Как да извлека само време от поле DateTime в Oracle SQL Developer?

  2. Извличане на връщани стойности на pl/sql масив в java

  3. Свържете няколко реда в една колона с помощта на функция в Oracle с 3 свързани таблици

  4. Какво прави (+) в Oracle SQL?

  5. Създаване на тригер за автоматично добавяне на id и по подразбиране unix datetime