mysql創建存儲過程及函數詳解

1. 存儲過程

1.1. 基本語法

create procedure name ([params])

UNSIGNED [characteristics] routine_body

 params : in|out|inout 指定參數列表 代表輸入與輸出

routine_body: SQL代碼內容,以begin ……..   end

characteristics: 指定存儲過程特性,包含5種

                           1 DETERMINISTIC 不確定的
2 NO SQL 沒有SQl語句,當然也不會修改數據
3 READS SQL DATA 隻是讀取數據,當然也不會修改數據
4 MODIFIES SQL DATA 要修改數據
5 CONTAINS SQL 包含瞭SQL語句

1.2 創建一個指定執行權限的存儲過程

create DEFINER=`root`@`%` procedure name ([params])

UNSIGNED [characteristics] routine_body

DEFINER:指明誰有權力來執行。

1.3 DELIMITER 的使用

      ”DELIMITER //“ 表示設置“//”符號為結束語,因為mysql中默認語句結束為分號‘;’,為瞭避免存儲過程與mysql語句符號沖突,所以有時使用DELIMITER來改變結束語符號,要配合end //來使用;

 示例:創建一個root賬戶執行的存儲過程,輸出給定字符串的長度

DELIMITER //
CREATE definer=`root`@`%` PROCEDURE `avgFruitPrice`(
in f_string VARCHAR(200)
)
BEGIN
    select length(f_string);
END//

2. 創建函數 

函數的創建與存儲過程相同

示例

DELIMITER //
CREATE definer=`root`@`%` FUNCTION `my_length`(
f_string VARCHAR(200)
)
RETURNS INT(11)
UNSIGNED  NO SQL
BEGIN
    return length(f_string);
END//

註意: 創建函數需要註意3個地方,

1.  RETURNS: 需指定返回類型

2. UNSIGNED  NO SQL 需指定存儲過程特性

3.return: 返回需要的數據

遇見的錯誤:

如報錯如上信息就是沒有指定存儲過程特性。

存儲過程函數中可以通過mysql查詢結果為其參數復制: 其語句為select …. into

begin

declare onename char(50) default‘0';

declare twoname char(50);

select f_name, b_name into onename, twoname from t_user where id =1;

.......

end//

說明:

declare: 存儲過程及函數內部定義變量

default:默認值

到此這篇關於mysql創建存儲過程及函數詳解的文章就介紹到這瞭,更多相關mysql存儲過程及函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: