mysql從5.0版本開始支持存儲過程、存儲函數、觸發器和事件功能的實現。 我們以一本書中的例題為例:創建xscj資料庫的存儲過程,判斷兩個輸入的參數哪個更大。並調用該存儲過程。 (1)調用 首先,創建存儲過程(procedure),名為xscj.compar 執行結果如下: 在上邊的語句中: cr ...
mysql從5.0版本開始支持存儲過程、存儲函數、觸發器和事件功能的實現。
我們以一本書中的例題為例:創建xscj資料庫的存儲過程,判斷兩個輸入的參數哪個更大。並調用該存儲過程。
(1)調用
首先,創建存儲過程(procedure),名為xscj.compar
delimiter $$ create procedure xscj.compar (in k1 integer, in k2 integer, out k3 char(6) ) begin if k1>k2 then set k3='大於'; elseif k1=k2 then set k3='等於'; else set k3='小於'; end if; end$$ delimiter ;
執行結果如下:
在上邊的語句中:
create 語句是創建存儲過程,下行表示的是存儲過程參數,in 表示輸入參數, out 表示輸出參數,inout 表示輸入/輸出參數,@表示用戶變數;
If 語句是流程式控制制語句,當條件為真,執行對應的SQL語句;
在代碼的前一部分,因為在mysql中,伺服器處理語句的時候是以分號為結束標誌的,但是在創建存儲過程的時候,存儲過程可能包含多個SQL語句,每個SQL語句都是以分號為結尾的,這時伺服器處理程式的時候遇到第一個分號就會認為程式結束,這肯定是不可行的。因此在使用"delimiter+結束符"的命令將MYSQL語句的結束標誌修改為其他符號,最後在使用'opdelimiter ;'恢復以分號為結束標誌。
存儲過程創建完後,可以在程式、觸發器或者其他存儲過程中被調用,但是都必須使用CALL語句。
(2)刪除
仍然使用drop語句
drop procedure if exists 過程名
(3)修改
可以使用
alter procedure 存儲過程 [特征...]
來修改存儲過程的某些特征;但是如果要修改存儲過程的內容,可以使用先刪除再重新定義存儲過程的方法。