1.MySQL存儲過程
(1)格式
MySQL存儲過程建立的格式:CREATE PROCEDURE 過程名 ([過程參數[,...]])
[特性 ...] 過程體
mysql> DELIMITER //
mysql> CREATE PROCEDURE proc1(OUT s int)
-> BEGIN
-> SELECT COUNT(*) INTO s FROM user;
-> END
-> //
mysql> DELIMITER ;
注:
(1)這裏須要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,由於MySQL默認以";"爲分隔符,若是咱們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,因此要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL纔會將";"當作存儲過程當中的代碼,不會執行這些代碼,用完了以後要把分隔符還原。
(2)存儲過程根據須要可能會有輸入、輸出、輸入輸出參數,這裏有一個輸出參數s,類型是int型,若是有多個參數用","分割開。
(3)過程體的開始與結束使用BEGIN與END進行標識。
(2)參數
MySQL存儲過程的參數用在存儲過程的定義,共有三種參數類型,IN,OUT,INOUT,形式如:
CREATE PROCEDURE([[IN |OUT |INOUT ] 參數名 數據類形...])
IN 輸入參數:表示該參數的值必須在調用存儲過程時指定,在存儲過程當中修改該參數的值不能被返回,爲默認值
OUT 輸出參數:該值可在存儲過程內部被改變,並可返回
INOUT 輸入輸出參數:調用時指定,而且可被改變和返回
2.MySQL函數
用於返回特定的數據,當創建函數時,在函數頭部必須包含return子句,而在函數體內必須包含return語句返回的數據
使用create function來創建函數
(1)格式
create function 函數名([過程參數[,...]]) RETURNS type
函數體
mysql> DELIMITER //
mysql> CREATE function func1(s int) RETURNS int
-> BEGIN
-> SELECT COUNT(*) INTO s FROM user;
-> return(1);
-> END
-> //
mysql> DELIMITER ;
三點與存儲過程不一樣的地方: a,必需要一個RETURNS語句來定義返回值類型 b,不能指定參數的IN、OUT或INOUT修飾符,全部參數隱式的爲IN c,Function體必須包含RETURN語句來終結Function執行並返回指定的結果給調用者