Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/12/2012, 14:13
morway
 
Fecha de Ingreso: enero-2009
Mensajes: 32
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Crear un Stored Procedure que reciba un array de entrada

podrías hacerlo declarando rowtype de la tabla (A1%ROWTYPE) pero no te lo aconsejo porque cualquier cambio en la estructura de la tabla podrá desmontarte el código que ya tengas hecho, por mi parte te recomiendo que declares TYPE con tabla de registros y utilices ese TYPE en el paso de parámetros.
Código SQL:
Ver original
  1. /*
  2.  * Creamos la tabla
  3.  */
  4. CREATE TABLE A1(
  5.     col1    NUMBER ,
  6.     col2    varchar2(20),
  7.     col3    NUMBER
  8. );
  9.  
  10. /*
  11.  * Definimos un tipo de datos registro identico a la tabla
  12.  */
  13. TYPE T_A1 IS RECORD(
  14.     col1    A1.col1%TYPE ,
  15.     col2    A1.col2%TYPE ,
  16.     col3    A1.col3%TYPE
  17. );
  18.  
  19. /*
  20.  * Definimos una tabla de registros T_A1
  21.  */
  22. TYPE T_TABLA_A1 IS TABLE OF T_A1 INDEX BY BINARY_INTEGER;
  23.  
  24. /*
  25.  * Procedimiento de inserción en A1
  26.  */
  27. CREATE OR REPLACE PROCEDURE P_INSERT_A1( P_TABLA_A1 IN T_TABLA_A1 ) IS
  28.     I BYNARY_INTEGER;
  29. BEGIN
  30.     IF P_TABLA_A1.COUNT() > 0 THEN
  31.    
  32.         I := P_TABLA_A1.FIRST();
  33.         LOOP
  34.        
  35.             INSERT INTO A1(col1,col2,col3)
  36.             VALUES(P_TABLA_A1(I).col1,P_TABLA_A1(I).col2,P_TABLA_A1(I).col3);
  37.        
  38.         EXIT WHEN I = P_TABLA_A1.LAST();
  39.    
  40.             I := P_TABLA_A1.NEXT(I);
  41.        
  42.         END LOOP;
  43.        
  44. END P_INSERT_A1;

Un saludo
__________________
Anotaciones de un programador

Última edición por gnzsoloyo; 06/12/2012 a las 07:39 Razón: Código SQL mal etiquetado