Salut à tous,
je suis en train d'écrire un script PL/SQL qui détermine la taille des colonnes d'une table en utilisant un curseur qui parcourt les noms de colonnes.
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 set serveroutput on ; declare cursor c_colonne is Select COLUMN_NAME from USER_TAB_COLUMNS where TABLE_NAME like 'ma_table' ; nom_col USER_TAB_COLUMNS.COLUMN_NAME%TYPE ; taille_col integer :=0 ; begin dbms_output.put_line('start') ; open c_colonne ; loop Fetch c_colonne into nom_col ; select max(length(nom_col)) into taille_col from ma_table ; dbms_output.put_line('-------nom_col : '|| nom_col||'----------------') ; dbms_output.put_line('nom_col : '|| nom_col||' taille :'||taille_col) ; Exit when c_colonne%NOTFOUND; end loop; close c_colonne ; dbms_output.put_line('end') ; end ;
Mon script à un problème lors de l'instruction :
Le script compte la taille de la chaine du nom de la colonne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select max(length(nom_col)) into taille_col from ma_table ;
par exemple lorsque nom_col vaut col_1
taille_col vaut 5 car col_1 comporte 5 caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part select max(length(nom_col)) into taille_col from ma_table ;
Tout se passe comme ci le script interpretait :
au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select max(length('col_1')) into taille_col from ma_table ;
Comment est ce que je peux faire pour résoudre ce pb ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part select max(length(col_1)) into taille_col from ma_table ;
merci d'avance.
ben![]()
Partager