Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Một thủ tục SQL có thể trả về một bảng không?

Một hàm PL / SQL có thể trả về một bảng lồng nhau. Với điều kiện chúng tôi khai báo bảng lồng nhau dưới dạng kiểu SQL, chúng tôi có thể sử dụng nó làm nguồn truy vấn bằng cách sử dụng hàm TABLE () .

Đây là một loại và một bảng lồng nhau được xây dựng từ nó:

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> 

Đây là một hàm trả về bảng lồng nhau đó ...

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

... và đây là cách nó hoạt động:

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

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

SQL> 

Các kiểu SQL cung cấp cho chúng ta rất nhiều chức năng và cho phép chúng ta xây dựng các API khá phức tạp trong PL / SQL. Tìm hiểu thêm .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016 trên Linux

  2. Toán tử trục Oracle

  3. cx_Oracle.DatabaseError:ORA-12170:TNS:Đã xảy ra thời gian chờ kết nối

  4. TẠO Thủ tục Oracle

  5. Oracle SQL - Kết hợp Cú pháp / Từ khóa