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

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

相关推荐
luoluoal2 分钟前
基于python的医疗问句中的实体识别算法的研究(源码+文档)
python·mysql·django·毕业设计·源码
数据知道8 分钟前
PostgreSQL 性能优化:连接数过多的原因分析与连接池方案
数据库·postgresql·性能优化
怣508 分钟前
MySQL子查询实战指南:数据操作(增删改查)与通用表达式
数据库·chrome·mysql
范纹杉想快点毕业11 分钟前
从单片机基础到程序框架:构建嵌入式系统的完整路径
数据库·mongodb
数据知道13 分钟前
PostgreSQL性能优化:如何定期清理无用索引以释放磁盘空间(索引膨胀监控)
数据库·postgresql·性能优化
喵叔哟15 分钟前
67.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--分摊功能总体设计与业务流程
数据库·微服务·架构
tryCbest15 分钟前
Oracle查看存储过程
数据库·oracle
咩咩不吃草21 分钟前
【MySQL】表和列、增删改查语句及数据类型约束详解
数据库·mysql·语法
不懒不懒22 分钟前
【MySQL 实战:从零搭建规范用户表(含完整 SQL 与避坑指南)】
数据库
小陶的学习笔记24 分钟前
python~基础
开发语言·python·学习