Gerador de dados DUMMY para qualquer tabela.

[crayon]

CREATE OR REPLACE PROCEDURE popula_anytable(p_tname IN VARCHAR2
,p_records IN NUMBER) AUTHID CURRENT_USER AS
l_insert LONG;
l_rows NUMBER DEFAULT 0;
BEGIN
l_insert := ‘insert into ‘ || p_tname || ‘ select ‘;

FOR x IN (SELECT data_type
,data_length
,rpad(‘9’, data_precision, ‘9’) / power(10, data_scale) 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,1000),’;
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
EXECUTE IMMEDIATE l_insert
USING p_records – l_rows;
l_rows := l_rows + SQL%ROWCOUNT;
EXIT WHEN(l_rows >= p_records);
END LOOP;
END;

[/crayon]

Deixe um comentário