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

PL / SQL配列またはコレクションをパラメータとして操作し、それらをインデックスで結合する方法

    使用しているコレクションタイプはVARRAYであるため、インデックスが付けられます。あなたができること:

    FOR i IN 1..v_contacts_fname.COUNT
    LOOP
    
      dbms_output.put_line(v_contacts_fname(i) ||', ' || v_contacts_lname(i));
    
    END LOOP;
    

    サンプルコードの適応:

    DECLARE
    
    PROCEDURE create_account(p_entity_id NUMBER
                             , p_sub_id NUMBER
                             , v_contacts_fname sys.odcivarchar2list
                             , v_contacts_lname sys.odcivarchar2list
                             )
      IS
    
      BEGIN
    
        dbms_output.put_line('Entity_id: ' || p_entity_id || ' - Sub_id: ' || p_sub_id);
    
        FOR i IN 1..v_contacts_fname.COUNT
        LOOP
    
          dbms_output.put_line(v_contacts_fname(i) ||', ' || v_contacts_lname(i));
    
        END LOOP;
    
    
    END create_account;
    
    BEGIN
    
      create_account(p_entity_id            => 550005
                         , p_sub_id         => 100051
                         , v_contacts_fname => sys.odcivarchar2list('dan','bob')
                         , v_contacts_lname => sys.odcivarchar2list('anderson','bebop')
          ) ;
    
    END;
    /
    

    今すぐ

    Entity_id: 550005 - Sub_id: 100051
    dan, anderson
    bob, bebop
    
    
    PL/SQL procedure successfully completed.
    

    最初に非常に基本的なチェックを行って、countを確認できます。 両方の配列からの値は同じです。そうでない場合は、おそらく例外をスローします。

    単一のコレクション引数を渡したい場合、その引数は、コンテンツの使用方法(およびある程度まで)に応じて、スキーマレベルまたはおそらくパッケージで宣言されたレコードまたはオブジェクトタイプのコレクションである必要があります。 、使用しているOracleのバージョン)。でも、そんなことはしたくないようです。




    1. Python SQL – PythonでSQLite、MySQL、およびPostgreSQLデータベースを使用する方法

    2. すべてのテーブルとフィールドをMYSQLのutf-8-bin照合に変更するスクリプト

    3. PostgreSQLを使用して過去24時間からレコードを選択する方法

    4. php-mysqlバージョンがMysqlサーバーと競合します