Utilisation d'une variable dans une requête
Bonjour,
J'ai créé une procédure.
Dans celle-ci j'interroge la base 'information_schema' pour sélectionner certaines tables de ma base de donnée.
Pour chaque table trouvée je dois faire une requête 'alter table'.
Mon problème est que je n'arrive pas à faire cette requête car le nom de la table est mal interpréter :
Ci joint le code de ma fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
BEGIN
DECLARE lDone INT DEFAULT 0;
DECLARE lNomTable CHAR(64);
DECLARE lNomColonne CHAR(64);
DECLARE lType CHAR(64);
DECLARE lCurs CURSOR FOR
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='compta2'
AND (COLUMN_NAME like 'idUtil%' OR COLUMN_NAME like 'util%') and data_type='tinyint'
ORDER BY TABLE_NAME, DATA_TYPE;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET lDone = 1;
OPEN lCurs;
REPEAT
FETCH lCurs INTO lNomTable, lNomColonne, lType;
IF NOT lDone THEN
ALTER TABLE compta2.lNomTable MODIFY COLUMN lNomColonne SMALLINT UNSIGNED NOT NULL;
END IF;
UNTIL lDone END REPEAT;
CLOSE lCurs;
END $$ |
A l'exécution le message d'erreur est le suivant :
Table 'compta2.lNomTable' doesn't exist
Quelle est donc la syntaxe pour que ma requête alter table utilise le nom de la table référencée par la variable lNomTable ?
D'avance merci.