BONJOUR,
personne ne me répond?????
svp aidez moi je suis perdu.
svp
Version imprimable
BONJOUR,
personne ne me répond?????
svp aidez moi je suis perdu.
svp
Exécute ça.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 SET serveroutput ON SIZE 1000000 DECLARE nom_table dba_tab_columns.table_name%TYPE; nb_valeur_null_par_col NUMBER := 0; nb_colonnes NUMBER := 0; requete VARCHAR2(200); BEGIN FOR colonnes_nullables IN (SELECT table_name, column_name FROM user_tab_columns WHERE NULLABLE='Y' ORDER BY 1,2) LOOP -- réinitialisation des variables si on passe à une autre table IF NVL(nom_table,'0') != colonnes_nullables.table_name THEN nom_table := colonnes_nullables.table_name; requete := 'SELECT COUNT(column_name) FROM user_tab_columns WHERE table_name = :1' ; EXECUTE IMMEDIATE requete INTO nb_colonnes USING nom_table; DBMS_OUTPUT.PUT_LINE('La table ' || nom_table || ' contient ' || nb_colonnes || ' colonne(s) nullable'); END IF; requete := 'SELECT COUNT(1) FROM ' || nom_table ||' WHERE ' || colonnes_nullables.column_name || ' IS NULL'; EXECUTE IMMEDIATE requete INTO nb_valeur_null_par_col; DBMS_OUTPUT.PUT_LINE(nb_valeur_null_par_col || ' valeur(s) NULL dans la colonne ' || nom_table || '.' || colonnes_nullables.column_name); END LOOP; END;
Pour les autres questions c'est du pl/sql standard
dba_tab_columns.table_name : Nom de table . Nom de colonne
BONSOIR,
il m'a donné un résultat, 31. mais je veux juste les valeurs non nulles des tables de ma base. pas de toutes les tab
stp aide moi.
hééééééééééééééééééééééééé
je suis super contente.
c résolu ca marche hééééééééééééééé
mais je veux le nombre de valeus pour chque table séparément parce que j'aibesoin du résulat dans une métrique . comme ca je c pas coment récupérer le résulat de chaque table l'appliquer a la métrique (formule matématique qui calcule le nombre de valeurs non nulles sur le total des valeurs.)
je suis vraiemnt contente le maux de tete du jour cayé il est parti
je veux terminé ca aujourd'hui svp aidez moi un peu je dois rendre mon projet bientot.
bonsoir,
:cry: personne ne m'a répondue!!!!:(
j'ai voulu terminer aujourd'hui pour entamer autre chose demain.
mais bon
svp aidez moi.
j'ai une formule mathématique qui calcule la densité de la classe . cette métrique est: nombre de valeurs non nulles / total des valeurs.
Le total des valeurs je la calculer de cette facon et ca marche bien:le nombre de valeurs non nulles c'est vous que m'avez aidez a la calculer. mais le résulat je veux qu'il soit un nombre .Code:select count(*) from all_updatables_tables where owner='MOI'
je veux le nombre de valeurs nulles total de chaque classe.
svp comment je peux programmer en pl/SQL cette métrique. le problème que j'ai pas le temps pour apprendre a programmer mais croyez moi que j'ai essayé et j'ai bp appris. je dois rendre mon projet cette la semaine qui vient.
svp j'attend votre réponse.
Je trouve qu'on t'a aidé "beaucoup"..
Quand au projet, on n'est pas là pour le faire à ta place.
Il y a déjà eu un post là dessus http://www.developpez.net/forums/sho...d.php?t=388509 mais ce n'était pas du dynamique. Il te suffit de regrouper les 2.
Attention à ce que tu dis : Dans un cas tu veux compter les NON NULLS, dans l'autre les NULL
Citation:
je cherche a compter le nombre de chaine vide dans toute la classe
Orafrance s'est basé sur le premier cas pour écrire sa requete.Citation:
il m'a donné un résultat, 31. mais je veux juste les valeurs non nulles des tables de ma base
pour limiter les recherches des champs vides alors qu'ils sont déclarés en NOT NULL, il a mis cette condition.Code:WHERE NULLABLE='Y'
bonsoir,
Merci je m'excuse les gars
je suis vraiment pressée c'est pour ca je demande un peu plus d'aide.
je demande svp comment je peu sommer les valeurs de chque colonne est
mais elle m'a rien donnée...!!!!Code:requete:= sum(nombre_valeurs_nulles) ??
pardon de nouveau.
bonjour,
j'ai compris mon erreur et j'ai arriver a fucionner le calcul des valeurs non nulles et le nombre des valeurs nulles dans chaque table.
mais je veux faire la somme.
quand j'ajoute cette phrase m'affiche un message d'erreur comme si ya kk chose ki manque.Code:
1
2
3
4
5 requete := ' SELECT SUM(*) FROM ' || nom_table; EXECUTE IMMEDIATE requete INTO somme; DBMS_OUTPUT.PUT_LINE(somme || ' des valeur(s) dans la table ' || nom_table);
kk1 a une idée??
Merci
bonjour
personne ne me répond???
Bonjour,
C'est la syntanxe plsql, cela veut dire :Code:
1
2
3Code : nom_table dba_tab_columns.table_name%type; tab_owner dba_tab_columns.owner%type := '&schema';table_name est ce
- nom_table prend la même structure que le colonne table_name de la table
dba_tab_columns
- tab_owner prend la même structure que la colonne owner de la table dba_tab_columns
Voili, voilou :D
LBO72
tu remplaces les dbms_output par un insert ou tu ajoutes le résultat dans une variable et c'est finie... faut réfléchir un minimum quand même :roll:
Bonjour,
Il faut chercher un peu avant d'embêter les membres du forum avec des questions auqeulles tout le monde peut répondre en cherchant un peu :D
cela veut dire :Code:
1
2nom_table dba_tab_columns.table_name%type; tab_owner dba_tab_columns.owner%type := '&schema';
Je déclare une variable qui s'appelle nom_table qui aura la même structure que la colonne table_name de la table dba_tab_columns ...
Idem pour tab_owner.
Désolé si j'ai été un peu directe dans la réponse !
LBO72
J'ai tout commenté afin d'expliquer le code... tu devrais pouvoir faire la suite seule :?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 SET serveroutput ON SIZE 1000000 DECLARE -- la variable nom_table à le même type que la colonne dba_tab_columns.table_name nom_table dba_tab_columns.table_name%TYPE; -- la variable nb_valeur_null_par_col est un nombre initialisé à 0 nb_valeur_null_par_col NUMBER := 0; -- la variable nb_colonnes est un nombre initialisé à 0 nb_colonnes NUMBER := 0; -- la variable requete est une chaine de 200 caractères maximum non initialisée (donc NULL) requete VARCHAR2(200); BEGIN -- Je parcoure les lignes de la requête. Pour chaque ligne, je trouverai le contenu dans colonnes_nullables -- La requête recherche les tables et leurs colonnes nullable dans le schema courant FOR colonnes_nullables IN (SELECT table_name, column_name FROM user_tab_columns WHERE NULLABLE='Y' ORDER BY 1,2) LOOP -- réinitialisation des variables si on passe à une autre table IF NVL(nom_table,'0') != colonnes_nullables.table_name THEN nom_table := colonnes_nullables.table_name; -- requete contient la chaine de caractère exécutée par EXECUTE IMMEDIATE requete := 'SELECT COUNT(column_name) FROM user_tab_columns WHERE table_name = :1' ; -- J'exécute le contenu de requete qui compte le nombre de colonnes de la table :1 (remplacé par nom_table via USING). Le résultat est stocké dans nb_colonnes. EXECUTE IMMEDIATE requete INTO nb_colonnes USING nom_table; -- J'affiche "La table x contient y colonnes nullable" ou x et y sont remplacés par le contenu des variable nom_table et nb_colonnes DBMS_OUTPUT.PUT_LINE('La table ' || nom_table || ' contient ' || nb_colonnes || ' colonne(s) nullable'); END IF; -- requete contient la chaine de caractère exécutée par EXECUTE IMMEDIATE requete := 'SELECT COUNT(1) FROM ' || nom_table ||' WHERE ' || colonnes_nullables.column_name || ' IS NULL'; -- J'exécute le contenu de requete qui compte le nombre de lignes de la table nom_table où la colonne column_name de la ligne courante du curseur est NULL (IS NULL) EXECUTE IMMEDIATE requete INTO nb_valeur_null_par_col; -- J'affiche "x valeur(s) NULL dans la colonne y.z" ou x, y et z sont remplacés par le contenu des variable nb_valeur_null_par_col, nom_table et nb_colonnes DBMS_OUTPUT.PUT_LINE(nb_valeur_null_par_col || ' valeur(s) NULL dans la colonne ' || nom_table || '.' || colonnes_nullables.column_name); END LOOP; END;
bonjour,
vraiment je vous remercie tous, ca me reste une semaine et je termine tous, et j'embète personne.
vraiment Merci c'est un super forum.
Mon problème est résolu.