ToB企服应用市场:ToB评测及商务社交产业平台
标题:
MySQL的存储过程
[打印本页]
作者:
拉不拉稀肚拉稀
时间:
2022-6-26 15:18
标题:
MySQL的存储过程
目录
概念
特性
格式
创建存储过程
定义变量
局部变量
用户变量
系统变量
存储过程
存储过程传参-in
存储过程传参-out
存储过程传参-inout
流程控制
流程控制-判断
流程控制语句-case
控制流程-循环
while循环
repeat循环
loop循环
游标
异常处理-HANDLER句柄
概念
MySQL5.0版本开始支持存储过程,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法,存储过就是数据库SQL与层层面的代码封装与重用
特性
1.有输入输出参数,可以声明变量,有if/else/case/while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能
2.函数的普通特性:模块化,封装,代码复用
3.速度快,只有首次执行需要经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤
格式
创建存储过程
-- 创建存储过程
delimiter $$
create procedure proc01()
begin
select empno,ename from emp;
end $$
delimiter ;
-- 调用存储过程
call proc01;
复制代码
定义变量
局部变量
用户自定义,在begin/end块中有效
delimiter $$
create procedure proc02()
begin
declare var_name01 varchar(20) default 'aaa'; -- 声明/定义变量
set var_naem01 = 'zhangsan'; -- 给变量赋值
select var_name01; -- 输出变量的值
end $$
dilimiter ;
call proc02();
复制代码
用户变量
用户自定义,当前会话(连接)有效.类比java的成员变量
delimiter $$
create procedure proc04()
begin
set @var_name01 = 'beijing';
select @var_name01;
end $$
dilimiter ;
call proc04();
select @var_name01; -- 外部也是可以使用用户变量
复制代码
系统变量
1.系统变量有分为
全局变量
与
会话变量
2.全局变量在MYSQL启动的时候由服务器自动将他的初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改
3.会话变量在每次建立一个新的连接的时候,由MYSQL来初始化,MYSQL会将当前所有全局变量的值复制一份,来作为会话变量
4.也就是说,如果在建立会话以后,没有手动更改过会话变量与全局变量的值,那所有这些变量的值都是一样的
5.全局变量与会话变量的区别在于,对全局变量的修改会影响整个服务器,但是对会话变量的修改,只会影响到当前的会话(也就是当前的数据库连接)
6.有些系统变量的值是可以利用语句来动态进行更改的,但是有些系统变量的值缺是只读的,对于那些可以更改的系统变量,我们可以利用set语句进行更改
系统变量-全局变量
由系统系统,在整个数据库中有效
存储过程
存储过程传参-in
in表示传入的参数,可以传入数值或者变量,即使传入变量,并不会改变变量的值,可以内部更改,仅仅作用在函数范围内
delimiter $$
create procedure proc06(in param_empno int)
begin
select*from emp where empno = param_empno
end $$
delimiter ;
call proc06(1001);
复制代码
多个参数传参
存储过程传参-out
out表示从存储过程内部传值给调用者
存储过程传参-inout
inout表示从外部传入的参数经过修改后可以返回的变量,既可以使用传入变量的值也可以修改变量的值(即使函数执行完)
流程控制
流程控制-判断
IF语句包含多个条件判断,根据结果为TURE和FALSE执行语句,与编程语言中的if、else if、else语法类似,其语法格式如下
[code]-- 存储过程-if-- 案例1-- 输入学生的成绩,来判断成绩的级别/*score=60 , score=80 , score=90 , score100 :成就错误*/delimiter $$create procedure proc_12_if (in score int)begin if score=60 and score=80 and score=90 and score
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4