Bonjour,
Dans le but de connaitre l'utilisation des colonnes TEXT d'une table, j'ai créé cette procédure:
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
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
SELECT MAX(LENGTH(TOTO)) FROM `MaTable`;
va donner (par ex) 1104.
Comment s'en sortir ?
Merci par avance.
Partager