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!
推薦閱讀:
- 詳解MySQL中的存儲過程和函數
- MySQL中存儲過程的詳細詳解
- MySQL數據庫之內置函數和自定義函數 function
- MySQL一次性創建表格存儲過程實戰
- MySQL數據庫之存儲過程 procedure