mardi 28 juin 2011

Script PL/SQL Oracle Data Scanner v0.1

Après la publication du script PL/SQL d'hier, je me permets de créer donc le projet "Script PL/SQL Oracle Data Scanner" dont la version est actuellement en v0.1. L'objectif premier est de créer un script qui permet de rechercher une valeur dans une base de données Oracle en itérant sur tous les enregistrements de toutes les tables d'une base de données Oracle.

Pour chaque table, cette amélioration du script permet de compter tous les enregistrements de chacune, et liste les champs de chacune des tables également. Pour des raisons encore non élucidées, il y a des exceptions sur certaines tables système (probablement des droits qui ne permettent pas de les lire).
declare
myvar varchar2(1024);
i number;
myresult varchar2(1024);
myval varchar2(1024);
nbrec number;
begin
dbms_output.enable(500000);
for t in (select t.* from all_tables t where t.table_name like '%') loop
myvar := t.table_name;
dbms_output.put_line('table name = ' || myvar);

begin
execute immediate ('select count(*) from ' || t.table_name)
into nbrec;
dbms_output.put_line(' Nb records = ' || nbrec);
exception
when others then
dbms_output.put_line(' *** exception count ***');
end;

for u in (select u.* from all_tab_columns u where u.table_name = myvar) loop
dbms_output.put_line(' column name = ' || u.column_name);
end loop;
end loop;
end;