亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    實例詳解mysql存儲過程

    實例詳解mysql存儲過程

    什么是mysql存儲過程?

    存儲程序是被存儲在服務器中的組合SQL語句,經(jīng)編譯創(chuàng)建并保存在數(shù)據(jù)庫中,用戶可通過存儲過程的名字調(diào)用執(zhí)行。存儲過程核心思想就是數(shù)據(jù)庫SQL語言層面的封裝與重用性。使用存儲過程可以較少應用系統(tǒng)的業(yè)務復雜性,但是會增加數(shù)據(jù)庫服務器系統(tǒng)的負荷,所以在使用時需要綜合業(yè)務考慮。

    基本語法格式

    CREATE PROCEDURE sp_name ([proc_parameter[,...]])     [characteristic ...] routine_body

    (免費學習視頻教程分享:mysql視頻教程)

    實例一:計算消費折扣

    -- 創(chuàng)建存儲過程 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 ;         -- 調(diào)用存儲過程         CALL p01_discount(100.0,@discount);

    實例二:While..Do寫數(shù)據(jù)

    提供一張數(shù)據(jù)表

    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='觸發(fā)器寫數(shù)據(jù)';

    存儲程序

    根據(jù)傳入的參數(shù),判斷寫入t03_proced表的數(shù)據(jù)條數(shù)。

    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條數(shù)據(jù)call p02_batch_add(10);

    注意事項

    1、業(yè)務場景

    存儲過程在實際開發(fā)中的應用不是很廣泛,通常復雜的業(yè)務場景都在應用層面開發(fā),可以更好的管理維護和優(yōu)化。

    2、執(zhí)行速度

    假如在單表數(shù)據(jù)寫入的簡單場景下,基于應用程序寫入,或者數(shù)據(jù)庫連接的客戶端寫入,相比存儲過程寫入的速度就會慢很多,存儲過程在很大程度上沒有網(wǎng)絡通信開銷,解析開銷,優(yōu)化器開銷等。

    相關文章教程推薦:mysql教程

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號