2016-04-22 126 views
-1

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

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

    SELECT * FROM `table` INTO var; 
END 

的MySQL返回错误:

error 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 3

+0

没关系,因为这是''问题。我在第一篇文章中更改var名称。 – Marven88

回答

2

var是一个保留关键字

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

更新

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

SET @var = 0; 

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

+0

@fancyPants:请您详细说明您的评论,我知道它不那么具体,但您的观点是什么。注意:更新关于'';) – Tushar

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) 
+0

我会重新发布我的答案,以确保我没有错。事件发生了变化。 – Tushar

相关问题