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

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

相关推荐
“αβ”1 小时前
MySQL表的操作
linux·网络·数据库·c++·网络协议·mysql·https
p***s911 小时前
Spring数据库原理 之 DataSource
java·数据库·spring
虹科网络安全1 小时前
艾体宝干货 | Redis Java 开发系列#1 从零开始的环境搭建与实践指南
java·数据库·redis
火山引擎开发者社区1 小时前
火山引擎向量数据库 Milvus 版正式商业化:AI 时代的向量检索新标杆
数据库·milvus·火山引擎
盐焗西兰花2 小时前
鸿蒙学习实战之路 - 图片预览功能实现
学习·华为·harmonyos
神秘的土鸡2 小时前
openEuler 25.09 企业级 MySQL主从复制部署与性能优化实战提升50%
linux·数据库·mysql·性能优化·openeuler
Xudde.2 小时前
friendly2靶机渗透
笔记·学习·安全·web安全·php
韩立学长2 小时前
基于Springboot课堂教学辅助系统08922bq1(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
知识分享小能手2 小时前
CentOS Stream 9入门学习教程,从入门到精通, CentOS Stream 9 命令行基础 —语法知识点与实战详解(4)
linux·学习·centos
码界奇点2 小时前
Java Web学习 第15篇jQuery从入门到精通的万字深度解析
java·前端·学习·jquery