在存储过程中声明变量

问题描述 投票:-1回答:2

我在存储过程中声明变量有问题。我使用MySQL。我的示例代码:

CREATE PROCEDURE `name`()
BEGIN
    DECLARE varname INT;

    SELECT  * FROM `table` INTO var;
END

MySQL返回错误:

错误1064 - 您的SQL语法中有错误;检查与MariaDB服务器版本对应的手册,以便在第3行的''附近使用正确的语法

mysql sql stored-procedures variable-declaration
2个回答
2
投票

var是保留的关键字

CREATE PROCEDURE test ()
BEGIN
    DECLARE  var2 INT;
    // Do something
END;

更新:

我在错误中看到了MAriaDB,在MariaDB中声明变量的正确方法是

SET @var = 0;

您应该使用正确的关键字标记您的问题


2
投票

如果过程中有多个语句,则必须更改分隔符。否则MySQL认为过程声明在第一个语句之后完成。

这是一个有效的例子。顺便说一句,var不像其他人试图告诉你的那样是保留关键字。

DELIMITER $$
CREATE PROCEDURE test ()
BEGIN
    DECLARE var INT;
    SELECT 1 INTO var;
    SELECT var;
END $$
DELIMITER ;

CALL test();
+------+
| var  |
+------+
|    1 |
+------+
1 row in set (0.00 sec)
© www.soinside.com 2019 - 2024. All rights reserved.