您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“mysql如何創建存儲過程及函數”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“mysql如何創建存儲過程及函數”這篇文章吧。
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語句
create DEFINER=`root`@`%` procedure name ([params]) UNSIGNED [characteristics] routine_body
DEFINER:指明誰有權力來執行。
”DELIMITER //“ 表示設置“//”符號為結束語,因為mysql中默認語句結束為分號‘;',為了避免存儲過程與mysql語句符號沖突,所以有時使用DELIMITER來改變結束語符號,要配合end //來使用;
示例:創建一個root賬戶執行的存儲過程,輸出給定字符串的長度
DELIMITER // CREATE definer=`root`@`%` PROCEDURE `avgFruitPrice`( in f_string VARCHAR(200) ) BEGIN select length(f_string); END//
函數的創建與存儲過程相同
示例
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如何創建存儲過程及函數”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。