1. 程式人生 > >【MYSQL筆記3】MYSQL過程式資料庫物件之儲存過程的呼叫、刪除和修改

【MYSQL筆記3】MYSQL過程式資料庫物件之儲存過程的呼叫、刪除和修改

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

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