sql >> Database teknologi >  >> RDS >> Mysql

Jeg er ikke i stand til at finde ud af, hvilken forkert jeg begik ved at lave denne MYSQL-forespørgsel

  • Du skal indstille Delimiter til alt undtagen ;
  • Sæt eventuelt et flueben, hvis den samme navn-lagrede procedure allerede eksisterer.
  • I slutningen skal du omdefinere afgrænsningen tilbage til ;
  • Medmindre du vil bruge variabel x uden for denne lagrede procedure; du behøver virkelig ikke bruge @; det gør variablen tilgængelig overalt i den pågældende session).

Prøv (mere forklaring i kommentarerne):

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. Flet og sorter to veltalende samlinger?

  2. Installer SQL Server 2019 på en Mac

  3. Postgres tid med tidszone lighed

  4. At finde det nærmeste numeriske match i en database til det, en bruger har indtastet i php