2010-04-20 36 views

回答

1
DELIMITER $$ 

CREATE PROCEDURE prc_filler (cnt INT) 
BEGIN 
     SELECT name 
     FROM data; 
END 
$$ 

DELIMITER ; 
+0

我已經使用以下代碼 DELIMITER $$ CREATE PROCEDURE'prc_filler'(CNT INT) 從數據 END BEGIN SELECT 名稱 $$ DELIMITER; 但是我得到錯誤 #1064 - 你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,在第4行使用正確的語法''' 你有什麼想法 – Linto 2010-04-20 11:25:12

+0

@user:你錯過了分號。查看帖子更新。 – Quassnoi 2010-04-20 11:29:13

2

創建存儲過程的一個非常簡單的方法是使用類似MySQL Query Browser的東西。我一直使用這個工具來編寫存儲過程和函數。

有了這個工具,你做到以下幾點:。

  1. 從您要創建在proc/FUNC的圖式標籤在數據庫上右鍵單擊

  2. 選擇「創建新存儲過程/函數「或鍵入CTRL-P。

  3. 輸入過程/功能的名稱。

  4. 點擊CREATE PROCEDURE創建函數按鈕。

這將創建一個骨架存儲過程或函數爲你寫的所有的分隔符和DROP PROCEDURE/DROP FUNCTION線。你可以調整它們,如果你需要,但我通常不需要這樣做。

然後你可以充實proc/func並點擊執行並且,假設你沒有語法錯誤,你有一個存儲過程。

它生成骨骼的存儲過程看起來是這樣的:

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `database-name`.`proc-name` $$ 
CREATE PROCEDURE `database-name`.`proc-name`() 
BEGIN 

END $$ 
DELIMITER ; 

希望有所幫助。

注意:按鈕文本和提示可能在該工具的版本之間略有不同,但在其他情況下它的工作原理是相同的。

0

幾個簡單的例子:

delimiter ; 

drop procedure if exists get_user; 

delimiter # 

create procedure get_user 
(
    in p_user_id int unsigned 
) 
begin 
    select * from users where user_id = p_user_id; 
end # 

delimiter ; 


drop procedure if exists list_users; 

delimiter # 

create procedure list_users() 
begin 
    select * from users order by username; 
end # 

delimiter ;