本文主要介绍了mysql存储过程的概念、原理和常用用法,并结合实例详细分析了MySQL存储过程的概念、原理、创建、删除、调用等常用技巧和相关注意事项。有需要的可以参考一下。
本文介绍了MySQL存储过程的概念、原理和常见用法。分享给你,供你参考,如下:
1、存储过程的概念
在一些语言中,比如pascal,有一个概念叫做“过程”和“函数”function。在php中,没有过程,只有函数。
过程:封装几条语句。当被调用时,这些封装的主体执行。
函数:是一个有返回值的“过程”。
摘要:过程是一个没有返回值的函数。
在MySQL中:
我们来封装一些sql,命名为—— process。
将此过程存储在数据库——存储过程中。
2、创建存储过程
创建过程过程名()
开始
///- sql语句
结束$
3、查看已有的存储过程
显示程序状态
4、删除存储过程
drop procedure procedureName
5、调用存储过程
调用procedureName();
6、第一个存储过程
注意:我在这里把MySQL的结束标识符改成了$了。如果想知道如何设置为$,可以参考我的另一篇文章:MySQL触发器。
创建过程p1()
开始
选择2 3;
结束$
调用:
调用P1();
显示结果:
7、引入变量
存储过程是可编程的,这意味着您可以使用变量、表达式和控制结构来完成复杂的功能。在存储过程中,用declare声明变量:
声明变量名变量类型[默认默认值]
使用:
创建过程p2()
开始
声明年龄int默认18;
声明height int默认180;
Select concat('年龄:',年龄,'身高:',身高);
结束$
显示结果:
8、引入表达式
在存储过程中,变量可以在sql语句中合法操作,如-*/。变量的赋值形式:
设置变量名:=表达式
使用:
创建过程p3()
开始
声明年龄int默认18;
设定年龄:=20岁;
选择concat(' 20年后的年龄:',年龄);
结束$
显示结果:
9、引入选择控制结构
格式:
如果条件然后
声明
埃尔塞夫
声明
其他
声明
结束if;
使用:
创建过程p4()
开始
声明年龄int默认18;
如果年龄=18岁,那么
选择“成人”;
其他
选择“未成年”;
结束if;
结束$
显示结果:
10、给存储过程传参
在定义存储过程的括号中,可以声明参数。语法:
[in/out/inout]参数名称参数类型
使用:
创建程序p5(宽度整数,高度整数)
开始
选择concat('你的面积是:',宽度*高度)作为面积;
如果宽度和高度
选择“你更胖了”;
那么其他宽度和高度
选择‘你更瘦了’;
其他
选择“您的比较方”;
结束if;
结束$
显示结果:
11、使用while循环结构
需求:从1增加到100
使用:
创建过程p6()
开始
声明total int default 0;
声明num int default 0;
而num=100 do
set total :=总数;
set num:=num 1;
结束while
选择总计;
结束$
显示结果:
12、存储过程参数的输入输出类型
有三种类型:in、out和inout。
需求:从1增加到n
类型输入数据是我们给的值,类型输出数据是我们给变量名相乘输出的变量值。
(1)键入in,其中in是输入行参数,它可以接收我们的输入。
创建过程p7(in n int)
开始
声明total int default 0;
声明num int default 0;
while num=n do
set total :=总数;
set num:=num 1;
结束while
选择总计;
结束$
调用:
调用p7(100);
输出结果:
(2)参数类型2)out
创建过程p8(in n int,out total int)
开始
声明num int default 0;
集合总计:=0;
while num=n do
set total :=总数;
set num:=num 1;
结束while
结束$
调用:
调用p8(100,@ total);-100是输入参数,而@total是输出变量。
select @ total-总变量时的输出
输出结果:
(3)输入输出类型的参数
创建过程p9(输入年龄整数)
开始
设定年龄:=20岁;
结束$
调用:
set @ age=18-将@age变量设置为18
叫p9(@年龄);-调用p9存储过程,@age变量是一个参数。
选择@年龄;-显示@年龄变量
输出结果:
inout类型变量的参数也是一个变量名,它在存储过程中既用作输入变量又用作输出变量。
13、case结构的用法
使用:
创建过程p10()
开始
声明pos int default 0;
set pos:=floor(5 * rand());
案例位置
当1然后选择‘仍然飞行’;
当2时则选择‘掉进海里’;
当3时,则选择‘在陆地上着陆’;
否则选择‘我不知道它在哪里’;
结束案例;
结束$
输出结果:
14、repeat循环结构
格式:
[begin_label:]重复
语句_列表
直到搜索条件
结束重复[结束标签]
需求:从1增加到100
创建过程p11()
开始
声明total int default 0;
声明num int default 0;
重复一遍
set total:=总数;
set num:=num 1;
直到编号100
结束重复r;
选择总计;
结束$
输出结果:
对更多MySQL相关内容感兴趣的读者可以查看我们的专题:《MySQL存储过程技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》和《MySQL数据库锁相关技巧汇总》。
希望这篇文章对大家的MySQL数据库有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。