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 存储过程(超详细)

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

相关推荐
数智化管理手记7 小时前
精益生产中的TPM管理是什么?一文破解设备零故障的密码
服务器·网络·数据库·低代码·制造·源代码管理·精益工程
Xudde.7 小时前
班级作业笔记报告0x04
笔记·学习·安全·web安全·php
翊谦7 小时前
Java Agent开发 Milvus 向量数据库安装
java·数据库·milvus
晓晓hh7 小时前
JavaSE学习——迭代器
java·开发语言·学习
難釋懷8 小时前
OpenResty实现Redis查询
数据库·redis·openresty
421!8 小时前
GPIO工作原理以及核心
开发语言·单片机·嵌入式硬件·学习
别抢我的锅包肉9 小时前
【MySQL】第四节 - 多表查询、多表关系全解析
数据库·mysql·datagrip
Database_Cool_9 小时前
OpenClaw-Observability:基于 DuckDB 构建 OpenClaw 的全链路可观测体系
数据库·阿里云·ai
AI成长日志9 小时前
【笔面试算法学习专栏】双指针专题·简单难度两题精讲:167.两数之和II、283.移动零
学习·算法·面试
刘~浪地球9 小时前
Redis 从入门到精通(五):哈希操作详解
数据库·redis·哈希算法