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

Oracle setara dengan Java's Varargs

Anda memiliki setidaknya 3 opsi:

  1. (standar) menggunakan array asosiatif sebagai parameter prosedur
  2. menentukan jumlah parameter formal opsional yang 'cukup'
  3. gunakan parameter varchar tunggal dengan karakter pemisah yang ditentukan

contoh kode 1.)

TYPE t_map IS TABLE OF VARCHAR2(50) INDEX BY VARCHAR2(20);

CREATE OR REPLACE PROCEDURE demo_1 ( vararg IN t_map ) IS
BEGIN
   /* whatever */
   NULL;
END demo_1;

/* ... somewhere else ... */
my_var t_map;

my_var('first') := 'this';
my_var('next')  := ' is a ';
my_var('last')  := 'demo';

demo_1 ( my_var );
/* ... */

kode sampel 2.) (maks. 5 parameter)

CREATE OR REPLACE PROCEDURE demo_2 (
      vararg1 IN  VARCHAR2 DEFAULT NULL
    , vararg2 IN  VARCHAR2 DEFAULT NULL
    , vararg3 IN  VARCHAR2 DEFAULT NULL
    , vararg4 IN  VARCHAR2 DEFAULT NULL
    , vararg5 IN  VARCHAR2 DEFAULT NULL
) IS
BEGIN
   /* whatever */
   NULL;
END demo_2;

/* ... somewhere else ... */
demo_2 ( 'this', ' is a ', 'demo' );
/* ... */

kode sampel 3.) ( karakter khusus adalah ';' - tidak boleh muncul di dalam data muatan )

CREATE OR REPLACE PROCEDURE demo_3 (
      vararg IN  VARCHAR2
) IS
   l_arg2 VARCHAR2(50);
   l_arg5 VARCHAR2(50);
BEGIN
   l_arg2 := SUBSTR(REGEXP_SUBSTR(vararg, ';[^;]*', 1, 2), 2);
   l_arg5 := SUBSTR(REGEXP_SUBSTR(vararg, ';[^;]*', 1, 5), 2);
   /* whatever */
END demo_3;

/* ... somewhere else ... */
demo_3 ( ';this; is a ;demo;;really!;' );
/* ... */


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara memasukkan gambar atau gambar ke dalam database oracle?

  2. Cara memilih grup item terkait di Oracle SQL

  3. Cara menggunakan pass array dalam fungsi PL/SQL

  4. Memberikan Hak Istimewa Buat Direktori di Oracle

  5. Alternatif standar untuk CONNECT BY?