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

Cách làm việc với Mảng hoặc Tập hợp PL / SQL dưới dạng Tham số sau đó THAM GIA chúng với nhau bằng chỉ mục

Loại bộ sưu tập bạn đang sử dụng là một varray, vì vậy nó được lập chỉ mục; bạn có thể làm:

FOR i IN 1..v_contacts_fname.COUNT
LOOP

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

END LOOP;

Điều chỉnh mã mẫu của bạn:

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

bây giờ nhận được

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


PL/SQL procedure successfully completed.

Bạn có thể thực hiện một kiểm tra rất cơ bản ngay từ đầu để xác minh rằng count từ cả hai mảng đều giống nhau - nếu không thì có thể ném một ngoại lệ.

Nếu bạn muốn truyền một đối số tập hợp duy nhất thì đối số đó sẽ cần phải là một tập hợp các loại bản ghi hoặc đối tượng, được khai báo ở cấp lược đồ hoặc có thể trong một gói, tùy thuộc vào cách bạn muốn sử dụng nội dung (và, ở một mức độ nào đó , phiên bản Oracle bạn đang sử dụng). Có vẻ như bạn không muốn làm điều đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phiên bản tùy chỉnh Oracle SessionStateStoreProviderBase

  2. Gặp lỗi khi thực thi gói

  3. gặp lỗi khi tạo bảng dưới dạng ORA-00904::mã định danh không hợp lệ trong sql cơ sở dữ liệu oracle

  4. Làm cách nào để bạn thực thi SQL từ bên trong một tập lệnh bash?

  5. Xác định lỗi với Oracle VPD / RLS