在MySQL Workbench中声明变量语法无效?

时间:2014-01-30 18:35:48

标签: mysql syntax-error mysql-workbench declare

我正在尝试创建并设置变量:

DECLARE myId INT;
SET myId = 5;

但是,我在MySQL Workbench中收到了无效的语法投诉:

  

'DECLARE myId INT;'

附近的SQL语法错误

我尝试过以下变种:

DECLARE myId INT(4);
SET myId = 5;

DECLARE @myId INT;
SET @myId = 5;

DECLARE @myId INT(4);
SET @myId = 5;

有什么问题?

3 个答案:

答案 0 :(得分:4)

正如评论中所说,Declare仅对程序,函数等存储程序有效。 这里有一个存储过程及其调用的示例。

DELIMITER $$

CREATE PROCEDURE sp1 (x VARCHAR(5))
BEGIN
  DECLARE xname VARCHAR(5) DEFAULT 'bob';
  DECLARE myId INT;


  SET myId = 5;
  SELECT CONCAT(xname,' -- ',myId);
END;
$$

DELIMITER ;

call sp1('MY NAME');

答案 1 :(得分:2)

我遇到了同样的问题。必须在脚本的开头声明变量。

DELIMITER &&

DROP PROCEDURE IF EXISTS PS_HANDLERS;

CREATE PROCEDURE PS_HANDLERS(IN ID_USER INT, OUT isError INT)
    BEGIN
        DECLARE USER_EMAIL VARCHAR(50);
        DECLARE CONTINUE HANDLER FOR SQLEXCEPTION 
            BEGIN
                SET IsError = 1;
            END;

        SET USER_EMAIL = CONCAT(RAND(),'@',RAND(),'.com');
        SET isError = 0;



        INSERT INTO tbl_user VALUES(ID_USER, 'ipsum','lorem','ipsum@lorem.com','password','ROLE_USER');

        SELECT
            u.*
        FROM 
            tbl_user u;
    END &&

DELIMITER ;

答案 2 :(得分:1)

试试

SET @myId := 5;

如果你这样做了

select @myId;

你会得到 100

enter image description here