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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM