Cita:
Iniciado por dpwalter 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 originalDECLARE CURSOR LISTTABLAS
IS
SELECT COUNT(t.COLUMN_NAME) col ,T.TABLE_NAME nombreTabla FROM USER_TAB_COLUMNS t GROUP BY T.TABLE_NAME;
TYPE CUR_TYPE IS REF CURSOR;
TABLA CUR_TYPE;
nombre_Tabla VARCHAR2(30);
colu INTEGER;
str_query varchar2(1000);
str_into varchar2(9999);
str_values varchar2(9999);
columna VARCHAR2(1000);
contador INT ;
BEGIN
OPEN LISTTABLAS;
LOOP
FETCH LISTTABLAS INTO colu,nombre_Tabla;
EXIT WHEN LISTTABLAS%NOTFOUND;
dbms_output.put_line('------------INICIO----------------');
-- dbms_output.put_line(nombre_Tabla); --- IMPRIME LA TABLA
dbms_output.put('select ''');
dbms_output.put('INSERT '||nombre_Tabla||' INTO( ');
str_into:='';
str_values:='';
str_query := ' SELECT COLUMN_NAME columna FROM USER_TAB_COLUMNS WHERE TABLE_NAME= '''||UPPER(nombre_Tabla)||'''';
OPEN TABLA FOR str_query;
contador:=1;
LOOP
FETCH TABLA INTO columna;
EXIT WHEN TABLA%NOTFOUND;
IF(contador<colu) THEN
str_into:=str_into||' '||columna||', ';
str_values:=str_values||'''''|| '||columna||' ||'''''',''';
ELSE
str_into:=str_into||' '||columna;
str_values:=str_values||'''''|| '||columna||' ||''''';
END IF;
contador:=contador+1;
END LOOP;
CLOSE TABLA;
dbms_output.put(str_into||') VALUES ('''||str_values||''');');
dbms_output.put_line(''' INSERT_ FROM '||nombre_Tabla);
dbms_output.put_line('------------FIN----------------');
END LOOP;
CLOSE LISTTABLAS;
END;
puebalo de algo te debe servir.
Un cursor?? eso consume demasiada memoria, seria mejor hacerlo con un while y una tabla temporal para almacenar los resultados no???