概述
MySQL存储过程是一种在数据库中存储的预编译SQL语句集,可以通过调用存储过程名来执行,存储过程中可以包含逻辑控制语句和数据操作语句,可以实现复杂的业务逻辑,存储过程可以返回集合,即查询结果集。
创建存储过程
1、使用CREATE PROCEDURE
语句创建存储过程:
CREATE PROCEDURE procedure_name() BEGIN SQL语句 END;
2、使用DELIMITER
改变语句分隔符,以便在存储过程中使用分号:
DELIMITER // CREATE PROCEDURE procedure_name() BEGIN SQL语句 END // DELIMITER ;
存储过程返回集合
1、声明变量用于接收查询结果:
DECLARE result_cursor CURSOR FOR SELECT column_name FROM table_name;
2、打开游标:
OPEN result_cursor;
3、获取查询结果:
FETCH result_cursor INTO variable_name;
4、关闭游标:
CLOSE result_cursor;
5、将查询结果作为集合返回:
CREATE PROCEDURE procedure_name() BEGIN 声明变量用于接收查询结果 DECLARE result_cursor CURSOR FOR SELECT column_name FROM table_name; 声明变量用于存储查询结果集 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 定义一个记录类型,用于存储查询结果集中的每一行数据 DECLARE @record_type record; 初始化记录类型的变量,用于存储查询结果集中的每一行数据 SET @record_type = (SELECT column_name FROM table_name); 打开游标,获取查询结果集的第一行数据 OPEN result_cursor; get_data: LOOP FETCH result_cursor INTO @record_type; IF done THEN LEAVE get_data; END IF; 如果查询结果集为空,则跳出循环,否则继续获取下一行数据 在这里处理查询结果集中的每一行数据,例如插入到另一个表中,或者输出到客户端等操作 ...处理逻辑... END LOOP get_data; 结束循环,关闭游标,释放资源 CLOSE result_cursor; END; 结束存储过程定义,恢复默认的语句分隔符(分号)
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/638575.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复