sql >> Databasteknik >  >> RDS >> Mysql

Jag kan inte ta reda på vilket fel jag gjorde när jag gjorde den här MYSQL-frågan

  • Du måste ställa in Avgränsare på något utom ;
  • Om du vill kan du markera om samma namn lagrade procedur redan finns.
  • I slutet, omdefiniera avgränsaren tillbaka till ;
  • Om du inte ska använda variabeln x utanför denna lagrade procedur; du behöver verkligen inte använda @; den gör variabeln tillgänglig överallt i den särskilda sessionen).

Försök (mer förklaring i kommentarerna):

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 ;


  1. Reparerar Postgresql efter uppgradering till OSX 10.7 Lion

  2. php artisan migrate throwing [PDO undantag] Kunde inte hitta drivrutinen - använder Laravel

  3. SUM() Funktion i MySQL

  4. Få ett objekts ID från dess namn i SQL Server:OBJECT_ID()