1吓妆、關(guān)于MySQL的存儲(chǔ)過(guò)程
存儲(chǔ)過(guò)程是數(shù)據(jù)庫(kù)存儲(chǔ)的一個(gè)重要的功能,但是MySQL在5.0以前并不支持存儲(chǔ)過(guò)程吨铸,這使得MySQL在應(yīng)用上大打折扣行拢。
好在MySQL 5.0終于開(kāi)始已經(jīng)支持存儲(chǔ)過(guò)程,這樣即可以大大提高數(shù)據(jù)庫(kù)的處理速度诞吱,同時(shí)也可以提高數(shù)據(jù)庫(kù)編程的靈活性舟奠。
2、MySQL存儲(chǔ)過(guò)程的創(chuàng)建語(yǔ)法
CREATE PROCEDURE 過(guò)程名 ([過(guò)程參數(shù)[,...]])
BEGIN
[特性 ...] 過(guò)程體;
END;
3房维、參數(shù)
MySQL存儲(chǔ)過(guò)程的參數(shù)用在存儲(chǔ)過(guò)程的定義沼瘫,共有三種參數(shù)類型,IN,OUT,INOUT,形式如:
CREATE PROCEDURE([[IN |OUT |INOUT ] 參數(shù)名 數(shù)據(jù)類形...])
IN 輸入?yún)?shù):表示該參數(shù)的值必須在調(diào)用存儲(chǔ)過(guò)程時(shí)指定,在存儲(chǔ)過(guò)程中修改該參數(shù)的值不能被返回咙俩,為默認(rèn)值
OUT 輸出參數(shù):該值可在存儲(chǔ)過(guò)程內(nèi)部被改變耿戚,并可返回
INOUT 輸入輸出參數(shù):調(diào)用時(shí)指定,并且可被改變和返回
這里舉個(gè)例子:
CREATE PROCEDURE pro1(name varchar(4),sex int)
BEGIN
if sex < 1 then select name,'性別:男';
else
select name,'性別:女';
end if;
END;
4阿趁、MySQL存儲(chǔ)過(guò)程的調(diào)用
用call和你過(guò)程名以及一個(gè)括號(hào)膜蛔,括號(hào)里面根據(jù)需要,加入?yún)?shù)脖阵,參數(shù)包括輸入?yún)?shù)皂股、輸出參數(shù)、輸入輸出參數(shù)命黔。具體的調(diào)用方法可以參看上面的例子呜呐。
5、MySQL存儲(chǔ)過(guò)程的查詢
show procedure status where db='數(shù)據(jù)庫(kù)名';進(jìn)行查詢纷铣。
如果我們想知道卵史,某個(gè)存儲(chǔ)過(guò)程的詳細(xì),那我們又該怎么做呢搜立?是不是也可以像操作表一樣用describe 表名進(jìn)行查看呢以躯?
答案是:我們可以查看存儲(chǔ)過(guò)程的詳細(xì),但是需要用另一種方法:
SHOW CREATE PROCEDURE 數(shù)據(jù)庫(kù).存儲(chǔ)過(guò)程名;就可以查看當(dāng)前存儲(chǔ)過(guò)程的詳細(xì)。
6忧设、MySQL存儲(chǔ)過(guò)程的刪除
刪除一個(gè)存儲(chǔ)過(guò)程比較簡(jiǎn)單刁标,和刪除表一樣:
DROP PROCEDURE
從MySQL的表格中刪除一個(gè)或多個(gè)存儲(chǔ)過(guò)程。