Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/08/2010, 08:51
dpwalter
 
Fecha de Ingreso: julio-2010
Mensajes: 2
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: INSERT por cada registro de un SELECT

Hola ricardo aqui te dejo un script que hace otro script para que puedas hacer algo de lo que tu dices.

Código SQL:
Ver original
  1. DECLARE CURSOR LISTTABLAS
  2.             IS  
  3.     SELECT COUNT(t.COLUMN_NAME) col ,T.TABLE_NAME nombreTabla FROM USER_TAB_COLUMNS t GROUP BY T.TABLE_NAME;
  4.  
  5.     TYPE CUR_TYPE IS REF CURSOR;
  6.     TABLA CUR_TYPE;
  7.  
  8.    nombre_Tabla VARCHAR2(30);
  9.    colu INTEGER;
  10.    str_query varchar2(1000);
  11.    str_into varchar2(9999);
  12.    str_values varchar2(9999);
  13.    columna VARCHAR2(1000);  
  14.    contador INT ;
  15.     BEGIN
  16.    
  17.            OPEN  LISTTABLAS;
  18.            LOOP
  19.              FETCH LISTTABLAS INTO colu,nombre_Tabla;
  20.              EXIT WHEN LISTTABLAS%NOTFOUND;
  21.              dbms_output.put_line('------------INICIO----------------');
  22.                          -- dbms_output.put_line(nombre_Tabla); --- IMPRIME LA TABLA
  23.                          dbms_output.put('select ''');
  24.                           dbms_output.put('INSERT '||nombre_Tabla||' INTO( ');
  25.                           str_into:='';    
  26.                           str_values:='';                    
  27.                                str_query := ' SELECT COLUMN_NAME columna FROM USER_TAB_COLUMNS WHERE TABLE_NAME= '''||UPPER(nombre_Tabla)||'''';
  28.                                                                                    
  29.                                                     OPEN TABLA FOR str_query;
  30.                                                       contador:=1;
  31.                                                           LOOP
  32.                                                                 FETCH TABLA INTO columna;                                        
  33.                                                                 EXIT WHEN TABLA%NOTFOUND;  
  34.                                                                
  35.                                                                 IF(contador<colu)  THEN                                                            
  36.                                                                  str_into:=str_into||' '||columna||', ';
  37.                                                                  str_values:=str_values||'''''|| '||columna||' ||'''''',''';
  38.                                                                 ELSE
  39.                                                                  str_into:=str_into||' '||columna;
  40.                                                                  str_values:=str_values||'''''|| '||columna||' ||''''';                                                                
  41.                                                                 END IF;
  42.                                                                 contador:=contador+1;
  43.                                                           END LOOP;
  44.                                                      CLOSE TABLA;
  45.  
  46.                                             dbms_output.put(str_into||') VALUES ('''||str_values||''');');
  47.                                             dbms_output.put_line(''' INSERT_ FROM '||nombre_Tabla);
  48.                          dbms_output.put_line('------------FIN----------------');
  49.  
  50.              
  51.            END LOOP;
  52.                CLOSE LISTTABLAS;
  53.     END;

puebalo de algo te debe servir.