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 : 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 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.