我无法弄清楚我在进行此 MYSQL 查询时犯了什么错误

  • 本文关键字:错误 查询 弄清楚 MYSQL mysql sql
  • 更新时间 :
  • 英文 :

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;

当我运行此查询时,我在第 1064 行收到 4 错误。 任何有关如何处理它的提示都非常感谢。

您需要
  • 将分隔符设置为;以外的任何内容
  • (可选(检查是否已存在同名存储过程。
  • 最后,将分隔符重新定义回;
  • 除非你要在这个存储过程之外使用变量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 ;

你只需要删除 ;(分号(在分隔符之后它将正常工作

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;

最新更新