MySQL Procédure stockée erreur avec if...then...END if; déclarations
J'ai une base de données MySQL procédure stockée qui renvoie une erreur.
DELIMITER $$
DROP PROCEDURE IF EXISTS `test_schema`.`TEST_SPROC` $$
CREATE PROCEDURE `test_schema`.`TEST_SPROC` (IN var0 INT, var1 INT)
BEGIN
DECLARE var0 INT;
DECLARE var1 INT;
SELECT COUNT(*) INTO var0 FROM INFORMATION_SCHEMA.`TABLES`
WHERE `TABLE_SCHEMA`='test_schema' AND `TABLE_NAME`='original_table';
SELECT COUNT(*) INTO var1 FROM INFORMATION_SCHEMA.`COLUMNS`
WHERE `TABLE_SCHEMA`='test_schema' AND `TABLE_NAME`='new_table'
AND `COLUMN_NAME`='id';
IF var0=1 THEN
RENAME TABLE test_schema.original_table TO test_schema.new_table;
END IF;
IF var1=1 THEN
ALTER TABLE test_schema.new_table CHANGE id AccountID VARCHAR;
END IF; #error is thrown here.
END $$
DELIMITER ;
Erreur:
Ligne de Script: 4 Vous avez une erreur dans votre syntaxe SQL; consultez le manuel
qui correspond à votre versions du serveur MySQL pour la bonne syntaxe
utilisation à proximité d' '; END if;FIN " à la ligne 15
Quel est le problème avec mon instruction if?
Si votre déclaration est correctement formé. C'est l'instruction alter table qui a des erreurs de syntaxe.
OriginalL'auteur Josh | 2013-07-09
Vous devez vous connecter pour publier un commentaire.
Modifier cette ligne:
:
Bien sûr, vous devez spécifier une longueur pour la
VARCHAR
colonne qui convient. J'ai simplement utiliséVARCHAR(100)
comme un exemple.OriginalL'auteur Tom Mac
Vous devez spécifier une longueur de l'instruction alter table. Voir le commentaire ci-dessous:
OriginalL'auteur Eric Leschinski