首页 国际新闻正文

拔丝苹果的做法,详解Mysql中的存储进程,雾霾

什么是存储进程

简略的说,便是一组SQL句子集,功用强壮,能够完成一些比较杂乱的逻辑功用,相似于JAVA语言中的办法;

ps:存储进程跟触发器有点相似,都是一组SQL集,可是存储进程是主动调用的,且功用比触发器愈加强壮,触女忍2发器是某件事触发后主动调用;


有哪些特性

有输入输出参数,能够声明变量,有if/else, case,while等操控句子,通过编写存融冰之旅宁波的博客储朴熙俊进程,能够完成杂乱的逻辑功用;

函数的遍及特性:模块化,封装,代码复用;

速度快,只要初次履行需通过编译和优化进程,后续被调用能够直接履行,省去以上进程;


创立一个简略的存储进程

存储进程proc_adder功用很简略,两个整型输入参数a和b,一个整型四千金新年歌输出参数sum,功用便是核算输入参数a和b的成果,赋值给输出参数sum;

几点阐明:

DELIMITER ;;:之前说过了,把默许的输入的结束符;替换成;;。

DEFINER:创立者;

-- -----------------风雨天地全集免费观看-----------
-蛇性- Procedure structure for `proc_adder`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_肉核adder`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int)
BEGIN
#Routine body goes h拔丝苹果的做法,详解Mysql中的存储进程,雾霾ere...
DECLARE c int;
if a is null then set a = 0;
end if;

if b is拔丝苹果的做法,详解Mysql中的存储进程,雾霾 null then set b = 0;
end if;
set sum = a + b;
END
;;
DELIMITER ;

履行以上存储成果,验证是否正确,如下图,成果OK:

set @b=5;
call proc_adder(2,@b,@s);
select @s as sum;




存储进程中的操控句子

IF句子:

-- -----拔丝苹果的做法,详解Mysql中的存储进程,雾霾-----------------------
-- Procedure structure fo痛车是什么意思r `proc_if`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_if`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_if`(IN type int)
BEGIN
#Routine body goes here...
DECLARE c varchar(500);
IF type = 0 THEN
set c = 'param is 0';
ELSEIF type = 1 THEHp情诗N
set c = 'param is 1';
ELSE
set c = 'param is others, not 0 or 1拔丝苹果的做法,详解Mysql中的存储进程,雾霾';
END IF;
select c;
EN北帝伤后D
;;拔丝苹果的做法,详解Mysql中的存储进程,雾霾
DELIMITER ;

CASE句子:

-- ----------------------------
-- Procedure structure for `proc_case`
-- ----------------------------
DROP PROCEDURE IF EXISTS `proc_case`明日南京气候;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `p拔丝苹果的做法,详解Mysql中的存储进程,雾霾roc_case`(IN type int)
BEGIN
#Routine body goes here...
DECLARE c 祝贵泽微博varchar(500);
CASE type
WHEN 0 THEN
set c = 'param is 0';
WHEN 1 THEN
se极度深寒2深海惊变t c = 'param is 1';
ELSE
set c = 'param is others, not 0 or 1';
END CASE;
select c;
END
;;
DELIMITER ;

循环while句子:

-- ----------------------------
-- Procedure structure for `proc_whi卡洛驰为什么那么贵le`
-- ----------------------------
DROP PRO矿井藏宝图CEDURE IF EXISTS `proc_while`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_拔丝苹果的做法,详解Mysql中的存储进程,雾霾while`(IN n int)
BEGIN
#Routine body goes here...
DECLARE i int;
DECLARE s int;
SET i = 0;
SET s = 0;
WHILE i <= n DO
set s = s + i;
set i 宋智苑= i + 1;
END WHILE;
SELECT s;
END
;;
DELIMITER ;




存储进程坏处

不同数据库,语法不同很大,移植困难,换了数据库,需求从头编写;

欠好办理,把过多事务逻郁建秀辑写在存储进程欠好保护,不利于分层办理,简单紊乱,一般存储体罚憋尿进程适用于个别对功能要求较高的事务,其它的必要性不是很大;


后边小编会共享更多运维方面的干货,感兴趣的朋友走逐个哥优购波重视哩~

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。