Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara bekerja dengan Array atau Koleksi PL/SQL sebagai Parameter lalu GABUNG bersama-sama dengan Indeks

Jenis koleksi yang Anda gunakan adalah varray, sehingga diindeks; Anda dapat melakukan:

FOR i IN 1..v_contacts_fname.COUNT
LOOP

  dbms_output.put_line(v_contacts_fname(i) ||', ' || v_contacts_lname(i));

END LOOP;

Mengadaptasi kode contoh Anda:

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

sekarang mendapat

Entity_id: 550005 - Sub_id: 100051
dan, anderson
bob, bebop


PL/SQL procedure successfully completed.

Anda dapat melakukan pemeriksaan yang sangat mendasar di awal untuk memverifikasi bahwa count dari kedua array adalah sama - jika tidak maka mungkin ada pengecualian.

Jika Anda ingin meneruskan argumen koleksi tunggal maka argumen itu harus berupa kumpulan catatan atau tipe objek, dideklarasikan baik pada tingkat skema atau mungkin dalam sebuah paket, tergantung pada bagaimana Anda ingin menggunakan konten (dan, sampai batas tertentu , versi Oracle yang Anda gunakan). Sepertinya Anda tidak ingin melakukan itu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PLS-00201 pengenal 'PACKAGENAME.PROCEDURENAME' harus dideklarasikan

  2. Oracle, PDO_OCI vs OCI8

  3. Melarikan diri dari wildcard di LIKE

  4. Oracle:Impor file CSV

  5. XML Oracle:Ekstrak Multiple Child Node