1. 程式人生 > >【MYSQL筆記3】MYSQL過程式數據庫對象之存儲過程的調用、刪除和修改

【MYSQL筆記3】MYSQL過程式數據庫對象之存儲過程的調用、刪除和修改

重新定義 del begin 筆記 class 實現 多個 5.0 如果

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 存儲過程 [特征...]

來修改存儲過程的某些特征;但是如果要修改存儲過程的內容,可以使用先刪除再重新定義存儲過程的方法。

【MYSQL筆記3】MYSQL過程式數據庫對象之存儲過程的調用、刪除和修改