Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ich kann nicht herausfinden, was ich falsch gemacht habe, als ich diese MYSQL-Abfrage erstellt habe

  • Sie müssen das Trennzeichen auf alles außer setzen ;
  • Setzen Sie optional ein Häkchen, ob die gespeicherte Prozedur mit demselben Namen bereits existiert.
  • Definieren Sie am Ende das Trennzeichen wieder auf ;
  • Es sei denn, Sie verwenden die Variable x außerhalb dieser gespeicherten Prozedur; Sie brauchen wirklich nicht @ zu verwenden; es macht die Variable überall in dieser bestimmten Sitzung verfügbar).

Versuchen Sie es (weitere Erklärungen in den Kommentaren):

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 ;