在MariaDB中建存储过程
CREATE PROCEDURE pro_test(IN par1 int,IN par2 int)
BEGIN
-- 设定循环标记
DECLARE done INT DEFAULT FALSE;
-- 定义查询结果单条记录集,变量名和查询sql中的字段名需要相同
DECLARE rec ROW(c1 INT, c2 INT, c3 float);
--定义游标
DECLARE c CURSOR FOR
-- 查询sql ... ;
select c1,c2,c3 from tablename where f1= par1;
-- 有异常时退出
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN c;
read_loop:
LOOP
-- 循环赋值变量体
FETCH c INTO rec;
-- 如果结束或异常跳出循环
IF done THEN
-- 跳出循环
LEAVE read_loop;
END IF;
-- 执行sql,使用变量体时在rec中取出
insert into tablenamenew (v1,v2) values ( rec.c1 , rec.c2 );
END LOOP;
-- 关闭游标
CLOSE c;
END;
执行存储过程
call pro_test (100,200);
删除存储过程
drop PROCEDURE pro_test;
存储过程中定义和使用内部变量
-- 定义和赋值变量
-- 方法1
select sum(f1) into @co from tablename where f2 = 1;
-- 方法2
set @co = 100;
-- 使用变量
select @co