Mysql
 sql >> Base de données >  >> RDS >> Mysql

Je ne suis pas en mesure de comprendre quelle erreur j'ai commise en faisant cette requête MYSQL

  • Vous devez définir Delimiter sur n'importe quoi sauf ;
  • Facultativement, cochez si la procédure stockée du même nom existe déjà.
  • À la fin, redéfinissez le délimiteur en ;
  • Sauf si vous allez utiliser la variable x en dehors de cette procédure stockée ; vous n'avez vraiment pas besoin d'utiliser @; cela rend la variable disponible partout dans cette session particulière).

Essayez (plus d'explications dans les commentaires) :

CREATE TABLE t1 (s1 INT, PRIMARY KEY (s1)); -- create the table

DELIMITER $$ -- redefine the delimiter to $$ (for eg)

DROP PROCEDURE IF EXISTS `handlerdemo` $$ -- drop previous if exists

CREATE PROCEDURE handlerdemo ()
  BEGIN

    DECLARE x INT DEFAULT 0; -- datatype is INT 
    -- also a good practice to set default value

    SET x = 1; -- no need to use in Session context
    INSERT INTO t1 VALUES (x); -- use variable name here instead of literal value

    SET x = 2; 
    INSERT INTO t1 VALUES (x); 

  END $$ -- remember that delimiter is $$ right now

-- redefine the Delimiter back to ;
DELIMITER ;