MYSQL基础知识——SQL存储过程和游标
树图思维导图提供 SQL存储过程和游标 在线思维导图免费制作,点击“编辑”按钮,可对 SQL存储过程和游标 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:9d7b1ffb25aa7d77bd9c22ad6e584b23
SQL存储过程和游标思维导图模板大纲
概述
游标(cursor)是一个存储在 DBMS 服务器上的数据库查询,它不是一条 SELECT 语句,而是被该语句检索出来的结果集。
在存储过程中使用游标可以对一个结果集进行移动遍历。
游标主要用于交互式应用,其中用户需要对数据集中的任意行进行浏览和修改。
使用游标的四个步骤:
声明游标,这个过程没有实际检索出数据;
打开游标;
取出数据;
关闭游标;
SQL语句示例:
DELIMITER $
CREATE PROCEDURE getTotal()
BEGIN
DECLARE total INT;
-- 创建接收游标数据的变量
DECLARE sid INT;
DECLARE sname VARCHAR(10);
-- 创建总数变量
DECLARE sage INT;
-- 创建结束标志变量
DECLARE done INT DEFAULT false;
-- 创建游标
DECLARE cur CURSOR FOR SELECT id,name,age from cursor_table where age>30;
-- 指定游标循环结束时的返回值
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
SET total = 0;
OPEN cur;
FETCH cur INTO sid, sname, sage;
WHILE(NOT done)
DO
SET total = total + 1;
FETCH cur INTO sid, sname, sage;
END WHILE;
CLOSE cur;
SELECT total;END $DELIMITER ;
-- 调用存储过程
call getTotal();
概述
存储过程可以看成是对一系列 SQL 操作的批处理;
使用存储过程的好处
代码封装,保证了一定的安全性;
代码复用;
由于是预先编译,因此具有很高的性能。
创建存储过程
命令行中创建存储过程需要自定义分隔符,因为命令行是以 ; 为结束符,而存储过程中也包含了分号,因此会错误把这部分分号当成是结束符,造成语法错误。
包含 in、out 和 inout 三种参数。
给变量赋值都需要用 select into 语句。
每次只能给一个变量赋值,不支持集合的操作。
创建存储过程
DROP PROCEDURE IF EXISTS `proc_adder`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int)
BEGIN
DECLARE c int;
if a is null then set a = 0;
end if;
if b is null then set b = 0;
end if;
set sum = a + b;
END
;;
DELIMITER ;
使用存储过程
set @b=5;
call proc_adder(2,@b,@s);
select @s as sum;
树图思维导图提供 科技计划项目资金预算编制总体要求的学习和整理 在线思维导图免费制作,点击“编辑”按钮,可对 科技计划项目资金预算编制总体要求的学习和整理 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:49470946de6296e1813ed1ed5efc14ba
树图思维导图提供 低效和超龄导购员的管理计划 在线思维导图免费制作,点击“编辑”按钮,可对 低效和超龄导购员的管理计划 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:f7df47e61db6c5c13a363faab8770506