SALUT,
j'ai crée ma focntion
quand j'execute ce message s'affiche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 Create or replace Function <density> [()] return <float> SET serveroutput ON SIZE 1000000 is nom_table dba_tab_columns.table_name%TYPE; nb_valeurs_total Number:=0; nb_valeur_non_null_par_col NUMBER := 0; nb_colonnes NUMBER := 0; d float := 0; nb_total Number:=0; nb_totals Number:=0; requete VARCHAR2(200); BEGIN FOR colonnes_nullables IN (SELECT table_name,column_name FROM user_tab_columns ) 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; END IF; requete := ' SELECT COUNT(*) FROM ' || nom_table; EXECUTE IMMEDIATE requete INTO nb_total; nb_valeurs_total := nb_valeurs_total + nb_total; requete := 'SELECT COUNT(*) FROM ' || nom_table ||' WHERE ' || colonnes_nullables.column_name || ' IS NOT NULL'; EXECUTE IMMEDIATE requete INTO nb_valeur_non_null_par_col; nb_totals := nb_totals + nb_valeur_non_null_par_col; end loop; DBMS_OUTPUT.PUT_LINE(nb_valeurs_total || ' valeur (s) dans la base'); DBMS_OUTPUT.PUT_LINE(nb_totals || ' valeur (s) NON NULL dans la base '); d := nb_totals / nb_valeurs_total; return(d); END; /
kk1 a une idée??
Code : Sélectionner tout - Visualiser dans une fenêtre à part ORA-04050: procédure, fonction ou nom de package erroné ou absent
Partager