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

Melewati array data sebagai parameter input ke prosedur Oracle

Ini salah satu caranya:

SQL> set serveroutput on
SQL> CREATE OR REPLACE TYPE MyType AS VARRAY(200) OF VARCHAR2(50);
  2  /

Type created

SQL> CREATE OR REPLACE PROCEDURE testing (t_in MyType) IS
  2  BEGIN
  3    FOR i IN 1..t_in.count LOOP
  4      dbms_output.put_line(t_in(i));
  5    END LOOP;
  6  END;
  7  /

Procedure created

SQL> DECLARE
  2    v_t MyType;
  3  BEGIN
  4    v_t := MyType();
  5    v_t.EXTEND(10);
  6    v_t(1) := 'this is a test';
  7    v_t(2) := 'A second test line';
  8    testing(v_t);
  9  END;
 10  /

this is a test
A second test line

Untuk memperluas komentar saya ke jawaban @ dcp, inilah cara Anda dapat mengimplementasikan solusi yang diusulkan di sana jika Anda ingin menggunakan array asosiatif:

SQL> CREATE OR REPLACE PACKAGE p IS
  2    TYPE p_type IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
  3  
  4    PROCEDURE pp (inp p_type);
  5  END p;
  6  /

Package created
SQL> CREATE OR REPLACE PACKAGE BODY p IS
  2    PROCEDURE pp (inp p_type) IS
  3    BEGIN
  4      FOR i IN 1..inp.count LOOP
  5        dbms_output.put_line(inp(i));
  6      END LOOP;
  7    END pp;
  8  END p;
  9  /

Package body created
SQL> DECLARE
  2    v_t p.p_type;
  3  BEGIN
  4    v_t(1) := 'this is a test of p';
  5    v_t(2) := 'A second test line for p';
  6    p.pp(v_t);
  7  END;
  8  /

this is a test of p
A second test line for p

PL/SQL procedure successfully completed

SQL> 

Perdagangan ini menciptakan Oracle TYPE mandiri (yang tidak dapat berupa array asosiatif) dengan memerlukan definisi paket yang dapat dilihat oleh semua agar TYPE yang didefinisikan di sana dapat digunakan oleh semua.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. File Respons Pembuatan Otomatis

  2. buat fungsi khusus untuk perbedaan tanggal tidak termasuk akhir pekan dan hari libur di Oracle sql

  3. Instal klien Oracle Instan ke dalam wadah Docker untuk Python cx_Oracle

  4. bagaimana cara menduplikasi hasil sql saya?

  5. Bagaimana cara mengembalikan beberapa baris dari prosedur tersimpan? (Oracle PL/SQL)