Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/08/2010, 13:36
juancitoba
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Poblar o Cargar tabla con datos aleatorios automáticamente

Hola, necesito ayuda para hacer funcionar este stored procedure en ORACLE 10g. El objetivo del mismo es poblar una tabla, cuyo nombre se pasa por parámetro. La encontré en la web, pero aparentemente no es compatible con mi BD.

Muchas gracias por anticipado!


create or replace procedure fill_table (p_tname in varchar2, p_records in number)

l_insert long;
l_rows number default 0;
begin

-- Ciclo para llenar la tabla con la información aleatoria.

for x in (select data_type, data_length,
rpad ('9', nvl (data_precision, 10), '9') / power (10, nvl (data_scale, 1)) maxval
from user_tab_columns
where table_name = upper(p_tname)
order by column_id) loop

if ( x.data_type in ('NUMBER', 'FLOAT' )) then
l_insert := l_insert || 'dbms_random.value(1,' || x.maxval || '),';
elsif ( x.data_type = 'DATE' ) then
l_insert := l_insert || 'sysdate+dbms_random.value+dbms_random.value(1,100 0),';
else
l_insert := l_insert || 'dbms_random.string(''A'',' || x.data_length || '),';
end if;
end loop;

l_insert := rtrim(l_insert,',') || ' from all_objects where rownum <= :n';

loop
dbms_output.put_line (l_insert);
dbms_output.put_line (to_char (p_records) || '-' || to_char (l_rows));
execute immediate l_insert using p_records - l_rows;
l_rows := l_rows + sql%rowcount;
exit when ( l_rows >= p_records );
end loop;
end;
/