什麼是mysql預存程序?
儲存程式是被儲存在伺服器中的組合SQL語句,經過編譯建立並儲存在資料庫中,使用者可透過預存程序的名字呼叫執行。儲存過程核心想法就是資料庫SQL語言層面的封裝與重用性。使用預存程序可以較少應用系統的業務複雜性,但是會增加資料庫伺服器系統的負荷,所以在使用時需要綜合業務考慮。
基本語法格式
CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body
(免費學習影片教學分享:mysql影片教學)
實例一:計算消費折扣
-- 创建存储过程 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教學
#以上是實例詳解mysql儲存過程的詳細內容。更多資訊請關注PHP中文網其他相關文章!