服务器之家

服务器之家 > 正文

MySQL存储过程图文实例讲解

时间:2022-03-09 22:27     来源/作者:程裕强

MySQL存储过程

存储过程是数据库的一个重要的功能,MySQL 5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0开始支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。

 

MySQL存储过程的创建

语法

CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体

DELIMITER //
CREATE PROCEDURE myproc(OUT s int)
  BEGIN
    SELECT COUNT(*) INTO s FROM students;
  END
  //
DELIMITER ;

分隔符

MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

参数

存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT:

IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值OUT:该值可在存储过程内部被改变,并可返回INOUT:调用时指定,并且可被改变和返回

过程体

过程体的开始与结束使用BEGIN与END进行标识。

MySQL存储过程图文实例讲解

 

1、简单实例

create procedure demo.p_test1()
begin
-- 使用 declare语句声明一个变量
declare id int default 0;
declare name varchar(50) default '';
-- 使用set语句给变量赋值
set id=7521;
-- 将users表中id=1的名称赋值给username
select ename into name from demo.emp where empno=id;
-- 返回变量
select name;
end;

MySQL存储过程图文实例讲解

 

2、通过游标遍历结果集

create table demo.test(
	id int,
	cnt varchar(50)
)
create procedure demo.p_test2()
-- 通过游标遍历结果集
begin
-- 声明变量
declare id int default 0;
declare name varchar(50) default '';
declare done boolean default 1;
-- 声明游标
declare rs cursor for SELECT deptno,dname from demo.dept ;
-- 定义异常:
declare continue handler for SQLSTATE '02000' SET done = 0; 
-- 打开游标
open rs;
delete from demo.test;
while done do 
	begin
	  fetch rs into id,name;
    INSERT into demo.test SELECT e.deptno,count(1) from demo.emp e WHERE e.deptno =id group by e.deptno;
   end ;
end while;
-- 关闭游标
close rs;
end;
call demo.p_test2();

MySQL存储过程图文实例讲解

SELECT * from  demo.test;

MySQL存储过程图文实例讲解

 

总结

到此这篇关于MySQL存储过程讲解的文章就介绍到这了,更多相关MySQL存储过程内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/chengyuqiang/article/details/122562302

标签:

相关文章

热门资讯

2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
返回顶部