2015-07-21 44 views
0

我對我的數據庫使用mysql workbench 6.2。在mysql工作臺中使用declare @語法錯誤意外6.2

我創建過程來執行的查詢字符串,但它錯誤變量「語法錯誤意外」「聲明@str VARCHAR(2000)」。我嘗試在變量中刪除'@',但它在'行中不起作用PREPARE stmt FROM str;'。它通知錯誤 「意外海峽

這是我的代碼:

CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`() 
BEGIN 
declare @str varchar(2000) DEFAULT ''; 
set @str = 'select * from category;'; 
PREPARE stmt FROM @str; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
END 
+0

只是刪除'@'不會幫助,預處理語句必須使用會話變量。 (請參閱下面的改進答案) – Uueerdo

回答

0

會話變量不聲明。你不需要(和不能做什麼)

DECLARE @str varchar(2000) DEFAULT ''; 

只設定你已經有必要

SET @str = 'select * from category;'; 

順便說一句,這是最好的名字在這樣一些獨特的情況下,會話變量(如果調用該過程的連接已經使用簡單名稱作爲其他內容)。

+3

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – dhh

+0

@dhh它確實提供了一個答案;但我承認它可能會更加冗長,因爲它可能被解釋爲「刪除@」。 – Uueerdo