一、什么是存储过程
存储过程是一组预先编写好的SQL语句集合,它们按特定的顺序依次执行,完成各种数据库操作的功能,并返回执行结果给用户。通俗点说,它就像是一种“数据库内部程序”,用于执行一定的业务逻辑。
二、优点
- 提高系统性能
- 较好地保护数据
- 降低应用程序的复杂度
三、缺点
- 架构不清晰,不够面向对象
- 开发和维护要求比较高
- 可移植性差
四、存储过程示例
CREATE DEFINER=`root`@`%` PROCEDURE `NewProc`()
BEGIN
-- 定义结束标识
DECLARE stop_flag int DEFAULT 0 ;
-- 声明临时保存数据的变量
DECLARE temp_value VARCHAR(100);
-- 定义游标,获取数据列表
DECLARE cursor_data CURSOR FOR SELECT '张三' as data_name union select '李四' union select '王五' ;
-- 设置结束标志
-- 这条语句定义了一个 CONTINUE HANDLER,它是在条件出现时被执行的代码。这里,它指出当 SQLSTATE '02000'出现时,SET stop_flag=1 。
-- SQLSTATE '02000'是一个未找到条件,当REPEAT由于没有更多的行供循环而不能继续时,出现这个条件
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag = 1 ;
-- 打开游标
open cursor_data;
-- 定义内层循环
read_loop: LOOP
-- 遍历值放入变量中
FETCH cursor_data INTO temp_value;
-- 循环结束条件
if stop_flag = 1 then
LEAVE read_loop;
end if;
-- 执行业务逻辑
select temp_value;
-- 关闭内循环
END LOOP;
-- 关闭游标
CLOSE cursor_data;
# 存储过程结束符号
END