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型は多くの機能を提供し、PL/SQLで非常に洗練されたAPIを構築できるようにします。 詳細



    1. Rails postgresアダプターはsslをサポートしていますか?

    2. Oracleスプールからファイルへの最大列幅

    3. データベース接続の確立に失敗した背後にある根本的なエラーは何ですか。接続文字列、ユーザー名、パスワードを確認してください。

    4. bind_paramなしでPDOプリペアドステートメントによるSQLインジェクションを完全に防ぐことはできますか?