我不知道我在进行这个mysql查询时犯了什么错误

ki1q1bka  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(356)
CREATE TABLE t1 (s1 INT, PRIMARY KEY (s1));
DELIMITER ;
CREATE PROCEDURE handlerdemo ()
BEGIN
DECLARE x INTEGER;
SET @x = 1; 
INSERT INTO t1 VALUES (1); 
SET @x = 2; 
INSERT INTO t1 VALUES (1); 
SET @x = 3; 
END;

当我运行这个查询时,第4行出现1064错误。任何关于如何处理它的提示都是非常感谢的。

agxfikkp

agxfikkp1#

你只需要移除(分号)在分隔符之后,它可以正常工作

CREATE TABLE t1 (s1 INT, PRIMARY KEY (s1));
DELIMITER -- just remove this ; from your query it will work fine
CREATE PROCEDURE handlerdemo ()
BEGIN
DECLARE x INTEGER;
SET @x = 1; 
INSERT INTO t1 VALUES (1); 
SET @x = 2; 
INSERT INTO t1 VALUES (1); 
SET @x = 3; 
END;
vsmadaxz

vsmadaxz2#

您需要将分隔符设置为除 ; (可选)检查是否已经存在同名存储过程。
最后,将分隔符重新定义回 ; 除非,要使用变量 x 在此存储过程之外;你真的不需要使用 @ ; 它使变量在该特定会话的任何地方都可用)。
尝试(在评论中提供更多解释):

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 ;

相关问题