定义: 利用纯sql集实现的"函数",外部程序直接调用该“函数”就可实现复杂的操作
特点: 1. 主动触发,这点与触发器不同,触发器是监听insert,update,delete操作后被触发进行的(被动)
2. 功能强大,具有函数的普遍功能,能实现复杂逻辑
3. 效率高,可被直接调用,无需分析优化编译
优点: 1. 简单调用即可实现复杂操作,即节省网络开销,又方便了代码逻辑
2. 运行效率高
缺点: 难维护,不好移植,可拓展性差
适用场景: 来自知乎
存储过程例子:
先创建一张users表
DROP TABLE IF EXISTS users ;
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`pass` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '2018-01-01 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
创建存储过程(以下语句可优化,哈哈哈,勿吐槽)
DROP PROCEDURE IF EXISTS procedure_insert_users; -- 删除已经存在的存储过程
delimiter $$ -- 定义将;;设置为存储过程结尾符
create procedure procedure_insert_users(in num int) -- 创建存储过程
begin
declare i int default 0; -- 定义变量 i
repeat -- 循环
set i = i +1;
insert into users(name,mobile,pass) values(CONCAT('test',i),13020304320+i,i);
until i = num -- 循环终止条件
end repeat; -- 结束循环
commit;
end $$ -- 结束存储过程
delimiter ;
调用:
SET @mynum = 100000; -- 设置个变量
CALL procedure_insert_users(@mynum); -- 调用存储过程
等以后用的更深入了再补充详细见解