как создать хранимую процедуру в Oracle, которая принимает массив параметров - PullRequest
8 голосов
/ 06 мая 2009

Может ли кто-нибудь сказать мне, возможно ли создать хранимую процедуру в Oracle, которая принимает массив в качестве входного параметра и как?

Ответы [ 2 ]

14 голосов
/ 07 мая 2009

Да. Oracle называет их коллекциями, и вы можете использовать множество коллекций.

Простой пример массива с использованием VARRAY.


DECLARE
  TYPE Str_Array IS VARRAY(4) OF VARCHAR2(50);
  v_array  Str_Array;

  PROCEDURE PROCESS_ARRAY(v_str_array  Str_Array)
  AS
  BEGIN
    FOR i IN v_str_array.first .. v_str_array.last LOOP
      DBMS_OUTPUT.PUT_LINE('Hello '||v_str_array(i));
    END LOOP;
  END;

BEGIN

  v_array := Str_Array('John','Paul','Ringo','George');

  PROCESS_ARRAY(v_array);

  -- can also pass unbound Str_Array
  PROCESS_ARRAY(Str_Array('John','Paul','Ringo','George'));

END;

1 голос
/ 07 мая 2009

Если я не ошибаюсь, есть нативный тип TABLE, который в основном является массивом. Но в прошлый раз я использовал его в 2001 году, так что, возможно, в настоящее время существуют самые мощные типы.

Проверьте это http://www.developer.com/db/article.php/3379271

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...