SALUT,
j'ai crée ma focntion
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;
/
quand j'execute ce message s'affiche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ORA-04050: procédure, fonction ou nom de package erroné ou absent
kk1 a une idée??