2009-04-18 10 views

Répondre

37

Point-virgule à la fin de la ligne.

INSERT INTO myTable (ID) values (5); 
+1

Il ne doit même pas être à la fin de la ligne, juste à la fin de l'instruction – soulmerge

+0

J'ai créé une instruction d'insertion avec ID = 0, puis modifié le champ en incrémentation automatique. Il a été ajouté comme ID = 1 .. – zeetit

8

Juste un simple;

alors essayez

insert into myTable(ID) values (5); 
select * from myTable; 
4

un point-virgule (;). Cela séparera vos déclarations.

13

Le point-virgule est le délimiteur par défaut. Vous pouvez cependant le redéfinir comme vous le souhaitez avec le mot clé DELIMITER. Du manuel MySQL:

mysql> delimiter // 

mysql> CREATE PROCEDURE simpleproc (OUT param1 INT) 
    -> BEGIN 
    -> SELECT COUNT(*) INTO param1 FROM t; 
    -> END; 
    -> // 
Query OK, 0 rows affected (0.00 sec) 

mysql> delimiter ; 

mysql> CALL simpleproc(@a); 
Query OK, 0 rows affected (0.00 sec) 

Ceci n'est pas limité aux définitions de procédures stockées bien sûr.

5

Je pense que le problème est que GO est un terminateur de lot, pas un terminateur d'instruction. Après avoir explicitement défini les transactions, j'ai exécuté ce code sans me dire que la procédure existe déjà. Sans les instructions de transaction, j'obtiens une erreur que la procédure existe déjà.

démarrer la transaction; drop procédure si existe usp_test; commit; démarrer la transaction; CREATE PROCEDURE usp_test() SELECT * des livres; commit; appelez usp_test();

Questions connexes