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

Làm thế nào để trả về nhiều hàng từ thủ tục đã lưu trữ? (Oracle PL / SQL)

Đây là cách xây dựng một hàm trả về một tập kết quả có thể được truy vấn như thể nó là một bảng:

SQL> create type emp_obj is object (empno number, ename varchar2(10));
  2  /

Type created.

SQL> create type emp_tab is table of emp_obj;
  2  /

Type created.

SQL> create or replace function all_emps return emp_tab
  2  is
  3     l_emp_tab emp_tab := emp_tab();
  4     n integer := 0;
  5  begin
  6     for r in (select empno, ename from emp)
  7     loop
  8        l_emp_tab.extend;
  9        n := n + 1;
 10       l_emp_tab(n) := emp_obj(r.empno, r.ename);
 11     end loop;
 12     return l_emp_tab;
 13  end;
 14  /

Function created.

SQL> select * from table (all_emps);

     EMPNO ENAME
---------- ----------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7902 FORD
      7934 MILLER


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chạy tập lệnh SQL Plus trong PowerShell

  2. ORA-22905 - khi truy vấn loại bảng bằng câu lệnh select

  3. Làm cách nào để tìm các giá trị liên tiếp trùng lặp trong bảng này?

  4. Làm thế nào để khôi phục khi xảy ra lỗi trong khi thực hiện lệnh trình tải sql?

  5. Làm cách nào để tôi có thể đưa ra một lệnh duy nhất từ ​​dòng lệnh thông qua sql plus?