2009-05-06 2 views
8

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

+0

Какой у вас клиент? Вы хотите вызвать эту хранимую процедуру из другой процедуры pl/sql или с C# или Java или ...? – tuinstoel

ответ

12

Да. 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; 

+0

очень хороший. Я добавил второй пример, показывающий Str_Array (...) в качестве параметра. –

1

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

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

Смежные вопросы