2016-04-22 123 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

相關問題