MySQL存储过程(二)——存储过程基本使用

今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL存储过程的基本使用。

一、存储过程定义和调用

(一)存储过程定义

存储过程定义格式为:

create procedure 【存储过程名】(参数1,参数2……)
beginSQL命令】
end

存储过程定义的格式非常简单,但是,要定义和使用存储过程,就是要向存储过程内写入SQL命令,然而,我们知道SQL命令必须以分号结尾,如果我们直接按照上述命令进行键入,那么当输入到SQL命令的分号时,MySQL数据库会认为整个命令已经写完,这时就会终止我们的键入。为了解决上述问题,我们必须先修改MySQL数据库的命令结束符。执行命令:

delimiter //

可以把MySQL数据库的命令结束符换成双斜杠,这样,当我们在写存储过程中写SQL命令结尾的分号时,MySQL数据库就不会认为我们的该条命令已经写完,而当我们写完end后,就可以键入双斜杠来结束存储过程的编辑。

(二)存储过程调用

在定义了一个存储过程后,我们可以使用call命令来调用存储过程,存储过程调用格式如下^

call 【存储过程名】 (参数1,参数2……)

(三)存储过程定义和调用示例

下面,以一个具体的例子来展示存储过程的定义和调用:
相关SQL命令如下:

delimiter //
create procedure exp()
    -> begin
    -> select * from student;
    -> end //
call exp()//

结果如下:
在这里插入图片描述
上述示例是MySQL最简单的示例,当然,其本身只包含一个淡出的SQL命令,因此并没有什么意义,随着我们深入的学习,我们就可以写出更加灵活、有用的MySQL存储过程了。

二、存储过程参数和变量

(一)存储过程参数

MySQL存储过程支持参数的调用,这给存储过程的编写提供了很大的灵活性。MySQL存在三种类型的参数,IN、OUT和INOUT。IN类型的参数主要是在调用存储过程时由外部输入存储过程参与并影响代码执行的,OUT类型的参数是存储过程执行后输出的,INOUT类型的参数兼具这两种参数的功能,主要是用于传入存储过程并进行修改的。存储过程参数的调用时,需要指明参数的类型。
关于参数的存储过程定义和调用示例如下:

delimiter //
create procedure name_to_grade(in name_in varchar(30), out grade_out int)
begin
select score from student join grade on student.id=grade.Sid where name=name_in;
end // 
call name_to_grade('Bob',@Y)//
select @Y//

在上述命令中,select into表示将select查询的结果写入该变量中,上述命令执行结果如下:
在这里插入图片描述

(二)存储过程变量

MySQL存储过程除了支持参数的传递之外,还支持变量的使用。MySQL中的变量使用declare关键字进行声明,在声明时必须指定变量的类型。变量可以使用set关键字进行赋值,使用set命令可以在declare声明变量后进行赋值,也可以在未声明变量前进行赋值,此时set在赋值的同时也定义了该变量。
注意,MySQL在select语句中和declare语句中,变量名不需要加“@”符号,但是在set命令和数字运算命令中需要加“@”符号。
MySQL存储过程定义和使用示例如下:

create procedure exp()
begin
declare sum_xy int;
set @x=1;
set @y=2;
set sum_xy=@x+@y;
select sum_xy;
end //
call exp()//

上述命令执行结果如下:
在这里插入图片描述

三、存储过程注释

MySQL允许在存储过程中添加注释,注释包括单行注释和多行注释,单行注释即在一行前面添加“–”,多行注释即采用“/**/”的形式将注释括起来。
在MySQL存储过程中使用注释示例如下:

create procedure zs()
begin
-- This is single expanatory note
/*
This is multi expanatory note
*/

执行结果如下:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 3
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值