Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle еквивалент на Varargs на Java

имате поне 3 възможности:

  1. (стандарт) използва асоциативен масив като параметър на процедура
  2. дефинирайте „достатъчен“ брой незадължителни формални параметри
  3. използвайте един параметър varchar с дефиниран разделител char

примерен код 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 );
/* ... */

примерен код 2.) (макс. 5 параметъра)

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' );
/* ... */

примерен код 3.) (специалният знак е ';' - не трябва да се среща в данните за полезния товар)

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. Създаване на Oracle Trigger с грешки при компилация, ORA-02289:последователността не съществува

  2. SQL заявка за намиране на редове с поне една от посочените стойности

  3. Генерирайте самоличност за база данни на Oracle чрез Entity Framework, като използвате съществуваща съхранена процедура

  4. Грешка в инструмента за мигриране на Worklight 6.2

  5. Актуализирайте със самоприсъединяване