Mysql的過程和函數(記錄)

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執行並返回指定的結果給調用者 
相關文章
相關標籤/搜索