Bonjour,

Dans le but de connaitre l'utilisation des colonnes TEXT d'une table, j'ai créé cette procédure:
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
BEGIN
    DECLARE ColonneTEXT varchar(100) DEFAULT "";
    DECLARE total varchar(5000) DEFAULT "";
    DECLARE LGMOY decimal(11,4) DEFAULT 0;
    DECLARE LGMAX decimal(11,4) DEFAULT 0;
    DECLARE fin BOOLEAN DEFAULT 0;
    DECLARE c2 CURSOR FOR
     SELECT COLUMN_NAME FROM information_schema.COLUMNS 
         WHERE DATA_TYPE="TEXT" 
               AND TABLE_NAME="MaTable" 
               AND TABLE_SCHEMA="MonSchema";
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET fin = TRUE;
    OPEN c2;
    REPEAT
        FETCH c2 INTO ColonneTEXT;
 
        SELECT MAX(LENGTH(ColonneTEXT)) INTO LGMAX FROM `MaTable`;
        SET total = CONCAT (total,ColonneTEXT," ", CAST(LGMAX as CHAR) ," ; ");
        UNTIL fin END REPEAT;
    CLOSE c2;
    SELECT total;  -- AccueilMySQLPHPPHP
END
Mon souci est que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT MAX(LENGTH(ColonneTEXT)) INTO LGMAX FROM `MaTable`;
renvoie la longueur du nom de la colonne contenu dans ColonneTEXT .
Ainsi, si le curseur a accroché la colonne TOTO, l'instruction donne 4 alors que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT MAX(LENGTH(TOTO))  FROM `MaTable`;
va donner (par ex) 1104.

Comment s'en sortir ?

Merci par avance.