實例詳解mysql儲存過程

王林
發布: 2020-01-22 19:41:25
轉載
2660 人瀏覽過

實例詳解mysql儲存過程

什麼是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中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!