实例详解mysql存储历程
发布时间:09/01 来源:未知 浏览:
关键词:
什么是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储备历程的具体内容,更多请关注百分百源码网其它相关文章!