sql >> データベース >  >> RDS >> Oracle

ストアドプロシージャから複数の行を返す方法は? (Oracle PL / SQL)

    テーブルであるかのようにクエリできる結果セットを返す関数を作成する方法は次のとおりです。

    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. SQL Server(T-SQL)でクエリ結果を添付ファイルとして電子メールで送信する方法

    2. ユーザーの行動を追跡する方法

    3. SQLite INSERT-ON DUPLICATE KEY UPDATE(UPSERT)

    4. MySQLのデフォルトの制約名は何ですか?