Mysql存储过程(学习自用)

目录

一、什么是存储过程?

二、存储过程有什么用?

三、存储过程的一些操作

3.1创建存储过程

3.2调用存储过程

3.3删除存储过程

3.4存储过程的一些语法

3.4.1传入传出参数

3.4.2定义变量

3.4.3赋值变量

3.4.4条件判断

3.4.5循环语句

四、抛出异常

五、游标的使用

5.1含义

5.2声明游标

5.3打开游标

5.4获取数据

5.5关闭游标


一、什么是存储过程?

存储过程本质上就是执行一组SQL语句来完成某些任务。

二、存储过程有什么用?

1)提高性能。

2)提高代码复用性。

3)简化复杂操作。

4)便于维护和管理。

5)减少数据库压力。

三、存储过程的一些操作

3.1创建存储过程

sql 复制代码
create procedure pro_name(
in 输入参数1,2,3..,
out 输出参数1,2,3...,
inout 输入输出参数1,2,3...)
begin
  SQL代码块
end

3.2调用存储过程

sql 复制代码
call pro_name(参数);

3.3删除存储过程

sql 复制代码
drop procedure pro_name;

3.4存储过程的一些语法

3.4.1传入传出参数

in是存储过程的输入参数,out数存储过程的输出参数,inout既可作为输入参数,又可作为输出参数。

3.4.2定义变量

sql 复制代码
declare 变量名 类型 default 默认值;

declare sum int default 0;

default 不需要可以去掉。

3.4.3赋值变量

sql 复制代码
-- 1)
set sum=0;

-- 2)
select 0 into sum;

3.4.4条件判断

sql 复制代码
if 判断条件1
   then
elseif 判断条件2
   then
elseif 判断条件3
   then
else
end if;

3.4.5循环语句

sql 复制代码
-- 1)while
while 判断条件
  do
  循环语句
end while;

-- 2)repeat
repeat
  循环语句
  until 条件     -- 条件成立则结束循环(注意until条件后面没有分号)
end repeat;

-- 3)loop
myloop:loop
  循环语句
  if 条件
     leave myloop;    -- 条件成立时执行leave语句跳出loop循环语句,若是iterate,则相当于continue作用
  end if;  
end loop;

四、抛出异常

sql 复制代码
create procedure pro_insert_student(
in id varchar(10),
in ssname varchar(20),
in sex varchar(5)
)
begin 
  declare easy_count int;
  declare exit handler for SQLEXCEPTION
	BEGIN
	  signal SQLSTATE '45002' set message_text='报异常了';
	END;
  #做检查,没有通过就抛出异常
  #1、id是否已经重复
		select count(*) into easy_count from student where sid=id;
		if easy_count>0 then 
		   signal SQLSTATE '45000' set message_text='id值重复';
	  end if;
		if sex !='男' and sex !='女' then
		   signal SQLSTATE '45001' set message_text='性别不合法';
	  end if;
	#2、sex是否是男或女
	  insert into student(sid,sname,ssex) values(id,ssname,sex);
end 
drop procedure pro_insert_student;

call pro_insert_student(20,'六百六十六','女');

五、游标的使用

5.1含义

游标(cursor)可以理解为一个指向结果集中某条记录的指针,允许程序逐一访问结果集中的每条记录,并对其进行逐行操作和处理。

5.2声明游标

sql 复制代码
declare 游标名称 cursor for 查询语句;

5.3打开游标

sql 复制代码
open 游标名称;

5.4获取数据

sql 复制代码
fetch 游标名称 into 变量[,变量,变量......]

5.5关闭游标

sql 复制代码
close 游标名称;

本文借鉴了MySQL 存储过程(超详细)

学习更详细的知识可以看一下。

相关推荐
未来之窗软件服务11 分钟前
solidwors插件 开发————仙盟创梦IDE
前端·javascript·数据库·ide·仙盟创梦ide
yc_122412 分钟前
SqlHelper 实现类,支持多数据库,提供异步操作、自动重试、事务、存储过程、分页、缓存等功能。
数据库·c#
小黑_深呼吸22 分钟前
Prometheus实战教程:k8s平台-Mysql监控案例
运维·学习·kubernetes·prometheus
小李不想说话1 小时前
HTTPS 加密原理
java·网络·网络协议·学习·安全·http·https
Leo.yuan1 小时前
基于地图的数据可视化:解锁地理数据的真正价值
大数据·数据库·信息可视化·数据挖掘·数据分析
好吃的肘子1 小时前
MongoDB入门
数据库·mongodb
noravinsc1 小时前
人大金仓数据库 与django结合
数据库·python·django
秋野酱2 小时前
基于javaweb的SpringBoot驾校预约学习系统设计与实现(源码+文档+部署讲解)
spring boot·后端·学习
代码配咖啡2 小时前
《Navicat之外的新选择:实测支持国产数据库的SQLynx核心功能解析》
数据库
懒大王爱吃狼2 小时前
怎么使用python进行PostgreSQL 数据库连接?
数据库·python·postgresql