2013-10-25 84 views
0

我希望能夠傳遞參數給存儲過程,所以我搜索網,遇到這樣的事情:MySQL的存儲過程@語法錯誤

DELIMITER $$ 
CREATE PROCEDURE addTmpUser 
@id varchar(10) 
AS 
BEGIN 
    //some sql code 
END$$ 

DELIMITER ; 

的問題是,我得到了一個語法錯誤@字符。

說明:我正在使用MySQL db。

+0

@id varchar(10); – tommasop

+0

增加了';',但仍然是相同的錯誤 – vlio20

回答

2

你混合變量類型。
@variable是一個具有整個連接範圍的用戶變量。
存儲過程中的變量看起來不同,它們之前沒有@。

另外,您需要聲明它們。這裏是一個例子

DELIMITER $$ 
CREATE PROCEDURE addTmpUser(p_id varchar(10)) 
-- the variable is named p_id as a nameing convention. 
-- It is easy for variables to be mixed up with column names otherwise. 
BEGIN 
    DECLARE innerVariable int; 
    insert into user (id) values (p_id); 
    -- return all users 
    select * from user; 
END$$ 

DELIMITER ; 

-- and now call it 
call addTmpUser(10); 
+0

,我應該怎麼稱呼它? (執行程序) – vlio20

+0

你可以'調用addTmpUser(10);' –

+0

這是什麼:'DECLARE innerVariable int'行呢? – vlio20

2

您需要使用IN,OUT,INOUT來指定參數。所以,你可以試試這個

DELIMITER $$ 
CREATE PROCEDURE addTmpUser (IN id VARCHAR(10)) 
BEGIN 
    //some sql code 
END$$ 

DELIMITER ; 

看那documentation

+0

現在我得到'AS'字上的錯誤。 (意外的'AS') – vlio20

+1

抱歉刪除那個 – Sachin

+0

,我應該怎麼稱呼它? (執行程序) – vlio20