什么是mysql存儲過程?
存儲程序是被存儲在服務器中的組合SQL語句,經編譯創建并保存在數據庫中,用戶可通過存儲過程的名字調用執行。存儲過程核心思想就是數據庫SQL語言層面的封裝與重用性。使用存儲過程可以較少應用系統的業務復雜性,但是會增加數據庫服務器系統的負荷,所以在使用時需要綜合業務考慮。
基本語法格式
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body實例一:計算消費折扣
-- 創建存儲過程
DROP PROCEDURE IF EXISTS p01_discount ;
CREATE PROCEDURE p01_discount(IN consume NUMERIC(5,2),OUT payfee NUMERIC(5,2))BEGIN
-- 判斷收費方式
IF(consume>100.00 AND consume<=300.00) THEN
SET payfee=consume*0.8;
ELSEIF (consume>300.00) THEN
SET payfee=consume*0.6;
ELSE
SET payfee = consume; END IF; SELECT payfee AS result;END ;
-- 調用存儲過程
CALL p01_discount(100.0,@discount);實例二:While..Do寫數據
提供一張數據表
CREATE TABLE `t03_proced` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `temp_name` varchar(20) DEFAULT NULL COMMENT '名稱', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='觸發器寫數據';
存儲程序
根據傳入的參數,判斷寫入t03_proced表的數據條數。
DROP PROCEDURE IF EXISTS p02_batch_add ;
CREATE PROCEDURE p02_batch_add(IN count INT(11))BEGIN
DECLARE temp int default 0;
WHILE temp < count DO
INSERT INTO t03_proced(temp_name) VALUES ('pro_name');
SET temp = temp+1 ;
END WHILE;
END ;
-- 測試:寫入10條數據call p02_batch_add(10);注意事項
1、業務場景
存儲過程在實際開發中的應用不是很廣泛,通常復雜的業務場景都在應用層面開發,可以更好的管理維護和優化。
2、執行速度
假如在單表數據寫入的簡單場景下,基于應用程序寫入,或者數據庫連接的客戶端寫入,相比存儲過程寫入的速度就會慢很多,存儲過程在很大程度上沒有網絡通信開銷,解析開銷,優化器開銷等。
以上就是實例詳解mysql存儲過程的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。