Mysql-----存储过程与实务处理

本文深入解析了存储过程的概念、优势及创建方法,涵盖了无参数、有参数(包括输入、输出、输入输出参数)的存储过程创建与调用,以及变量、条件语句、循环控制等流程控制语句的应用。

1、什么是存储过程?
是sql查询语句与流程控制语句的预编译集合,以特定的方式存储在数据库中、以存储的名字来进行访问
2、存储过程好处:
效率高、可重复使用,减少网络流量、安全性
3、存储过程的分类:存储过程 和存储函数

存储过程的创建 procedure
通用语法:
Create procedure 存储过程名([in/out/inout 参数名 数据类型])
Begin
内容
—流程控制语句,增删改查
End

——无参数的存储过程
Create procedure 存储过程名()
Begin
内容
End;

——调用存储过程
Call 存储过程名();

——有参数的存储过程:in输入 、out 输出、inout 输出输入
输入语法:
Create procedure 存储过程名( in 参数名 数据类型 ,in 参数名 数据类型 ) –in可以不写
Begin
内容 –操作 传入的参数
End
——调用存储过程
Call 存储过程名称(值1,值2);
——输出参数
Create procedure 存储过程名(out 参数名 数据类型 ,out 参数名 数据类型 ) –out必须写
Begin
内容 –操作 为输出参数赋值
End
——调用存储过程—传入接收值得变量 –全局变量 @变量名

Call 存储过程名称(@变量名);–进入存储过程 取值
操作变量
Select @变量名 –输出变量
——给输出参数/变量赋值 语法
1、set参数名/变量名=值;
2、select 字段名 into参数名/变量名 from表明 where 条件
——输入/输出 inout
Create procedure 存储过程名 (inout 参数名 数据类型 ,inout 参数名 数据类型)–inout必须写
Begin
内容 –操作 给参数 赋值,被取值
End
——调用存储过程
Set @变量名=值;
Call 存储过程名(@变量名);
Select @ 变量名

1、变量类型:全局变量,局部变量
1.1全局变量:无序定义,直接使用,值 默认为null 以@符号开头 列如@a
输出 全局变量: select @变量名
赋值: set @变量名=值; 或 select 字段名 into @变量名 from表明 where条件
1.2局部变量:需要定义 只能定义在存储过程或函数内
定义局部变量:declare 变量名 数据类型;
定义并初始化:declare 变量名 数据类型 default值;
赋值:set 变量名=值; 或查询语句中赋值 select 字段名 into变量名from表名where条件
输出同上

2、条件语句:
If 语句:
单分支:if表达式 then 操作;
End if;
如果表达式1成立 就执行then 后面的操作
双分支:if 表达式1 then 操作;
Else 操作2;
End if;
如果表达式1成立就执行操作1,否则执行操作2;
多分支:if 表达式1 then 操作1;
Elseif 表达式2 then 操作2;
Elseif 表达式3 then 操作3;
Else 操作4;
End if;
如果表达式1成立就执行操作1,不成立再看表达式2是否成立,成立就执行操作2前面都不成立默认执行else后的

Case 语句:
格式一:
Case
When 表达式1 then 操作1;
When 表达式2 then 操作2;
Else 操作3;
End case;

原理与if elseif 相似

   格式二:
Case 变量名
	When 值1 then 操作1;
	When 值2 then 操作2;
	When 值n then 操作n;	
End case;
原理与switch相似
	变量名与when 后 值进行就执行 then后面的操作
如果嵌入到查询语句中,每个操作后不打;号,并结束 只写end
Select case列名
		When 值 then ‘内容’
		When 值 then ‘内容’
		End 取别名 from表名;
Select case列名
		When 列名>值 then ‘内容’
		When列名<值 then ‘内容’
		End 取别名 from表名;

Iterate ----类似C语言 continue
遇到该关键字 跳过此次循环 进入下一次循环
Leave—类似C语言break
遇到该关键字 结束单个循环

循环1:loop –死循环
语法:
[标记名:] loop
循环内容;
If 条件 then —满足什么条件就结束循环
Leave 标记名;
End if ;
End loop;

循环2:repeat –类似于 do-while
语法:
Repeat
循环体;
Until 条件 end repeat;
先执行循环体一遍,再来判断条件是否满足,满足就结束循环,不满足就继续

循环3:while –类似于while
语法:
[标记名]While 表达式 do
循环操作;
End while;
当表达式成立时,就执行循环操作,知道循环表达式不成立为止
存储过程· 可以调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值