简单的存储过程:
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 ;
IN a int, IN b int, OUT sum int
a,b 为输入参数;sum是输出参数
可以像上图一样调用,并且获取输出参数
存储过程 if case WHILE
参照:https://blog.csdn.net/xiaolyuh123/article/details/76147102
https://yq.aliyun.com/articles/112753
游标在存储过程中的使用
create procedure t()
begin
declare done boolean DEFAULT true;
declare id int(11);
declare tdate datetime;
declare cur CURSOR for select * from student;
declare continue handler for not found set done = false;
-- 若临时表已存在先删除
drop temporary table if exists ss;
create temporary table ss(
id int(11),
date datetime
);
open cur;
while done do
-- 获取数据
fetch cur into id,tdate;
-- TODO 需要执行的操作放在循环中,这里完成插入。
insert into ss value(id,tdate);
end while;
close cur;
-- 返回统计的记录
select * from ss;
end;