A voir également:
- Requête qui renvoi ttes les colonnes nulles
- Word colonnes indépendantes - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Renvoi d'appel ooredoo - Forum Samsung
- Renvoi mobilis ✓ - Forum telephonie fixe
- Figer les colonnes excel - Guide
1 réponse
loulou_it
Messages postés
2
Date d'inscription
mercredi 3 juin 2015
Statut
Membre
Dernière intervention
3 juin 2015
1
3 juin 2015 à 15:46
3 juin 2015 à 15:46
Salut,
Tu peux faire un SQL dynamique, par exemple celui-ci te dit pour chaque table et chaque colonne le nombre de champs non nuls par rapport au nombre total de lignes...
declare
v_query varchar2 (2000);
v_count number;
v_result number;
type dyncurs is ref cursor;
c_cursor2 dyncurs;
cursor c_cursor is
select table_name, column_name
from all_tab_columns
where table_name in ('<Nom de ta table ou liste de tables>);
begin
for c in c_cursor loop
v_query := 'select count (1) from ' || c.table_name;
execute immediate v_query into v_count;
v_query := 'select count (1) from ' || c.table_name || ' where ' || c.column_name || ' is not null';
open c_cursor2 for v_query;
fetch c_cursor2 into v_result;
while c_cursor2%found loop
dbms_output.put_line (c.table_name || '.' || c.column_name || ' : ' || v_result || ' / ' || v_count);
fetch c_cursor2 into v_result;
end loop;
close c_cursor2;
end loop;
end;
/
Tu peux faire un SQL dynamique, par exemple celui-ci te dit pour chaque table et chaque colonne le nombre de champs non nuls par rapport au nombre total de lignes...
declare
v_query varchar2 (2000);
v_count number;
v_result number;
type dyncurs is ref cursor;
c_cursor2 dyncurs;
cursor c_cursor is
select table_name, column_name
from all_tab_columns
where table_name in ('<Nom de ta table ou liste de tables>);
begin
for c in c_cursor loop
v_query := 'select count (1) from ' || c.table_name;
execute immediate v_query into v_count;
v_query := 'select count (1) from ' || c.table_name || ' where ' || c.column_name || ' is not null';
open c_cursor2 for v_query;
fetch c_cursor2 into v_result;
while c_cursor2%found loop
dbms_output.put_line (c.table_name || '.' || c.column_name || ' : ' || v_result || ' / ' || v_count);
fetch c_cursor2 into v_result;
end loop;
close c_cursor2;
end loop;
end;
/
4 juin 2015 à 09:45
peux tu m'expliquer un peu plus le code ? je n'ai jamais utilisé des requêtes sql dynamique et je n'arrive pas à l'appliquer ..
Merci encore une fois :)