Estoy tratando de pasar una matriz de datos (varchar
) en un procedimiento de Oracle. El procedimiento de Oracle sería llamado ya sea desde SQL * Plus o de otro procedimiento PL/SQL, así:Pasar una matriz de datos como un parámetro de entrada a un procedimiento de Oracle
BEGIN
pr_perform_task('1','2','3','4');
END;
pr_perform_task
leerá cada uno de los parámetros de entrada y llevar a cabo las tareas.
No estoy seguro de cómo puedo lograr esto. Lo primero que pensé fue utilizar un parámetro de entrada de tipo varray
pero yo estoy Error: PLS-00201: identifier 'VARRAY' must be declared
de error, cuando el definiton procedimiento es el siguiente:
CREATE OR REPLACE PROCEDURE PR_DELETE_RECORD_VARRAY(P_ID VARRAY) IS
En resumen, ¿cómo puedo pasar los datos como una matriz, dejar que el SP recorra cada uno de los parámetros y realice la tarea?
Estoy usando Oracle 10gR2 como mi base de datos.
Nice responder. Me preguntaba si es posible hacer lo que hace su primer método, pero para la situación donde el número de elementos en 't_in' es dinámico (es decir, es diferente para cada llamada a' testing'). Parece que uno necesita al menos codificar un límite superior para 'MyType'? ¿Puede esa restricción ser levantada de alguna manera? – ggkmath
@ggkmath, no importa qué tan grande sea la matriz, pero debe declarar el límite superior de VARRAY cuando crea o altera el TIPO. – DCookie
¿Existe una solución alternativa que pueda acomodar dicho tamaño dinámico, quizás sin VARRAY? Si no está relacionado, puedo comenzar un nuevo hilo. – ggkmath