post icon

Enviar ParamArray a un Stored Procedure en Oracle

Hace poco vimos como enviar una lista de valores a un Stored Procedure en SQL Server, en ésta ocasión veremos como hacerlo en Oracle. Este motor tiene soporte para esto hace mucho más tiempo y se lo puede implementar de varias maneras, pero veremos la más sencilla y útil en la mayoría de los casos.

El primer paso que debemos hacer es crear un tipo de datos personalizado,de tipo Array, eso lo logramos de esta manera:

CREATE OR REPLACE TYPE DEVTROCE.NROMOVIL_ARRAY AS
    VARYING ARRAY(100) OF VARCHAR2(15);
/

Luego programamos el procedimiento, para nuestro ejemplo hacemos algo sencillo que inserta  los datos en una tabla de una sola columna

CREATE OR REPLACE PROCEDURE DEVTROCE.PRC_TEST_PARAM_ARRAY  (p_nros_moviles DEVTROCE.NROMOVIL_ARRAY) IS
BEGIN
  FOR i IN 1..p_nros_moviles.count LOOP
    IF p_nros_moviles(i) IS NOT NULL THEN
      INSERT INTO DEVTROCE.TEST_PARAM_ARRAY VALUES (p_nros_moviles(i));
    END IF;
  END LOOP;
END;
/

y esto podemos invocarlo de esta manera

DECLARE
  v_array DEVTROCE.NROMOVIL_ARRAY;
BEGIN
  v_array := DEVTROCE.NROMOVIL_ARRAY('996258258', '996353535');

  DEVTROCE.prc_test_param_array(v_array);
END;

Comentarios desde Facebook:

Responder