首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

存储程序(三)之存储过程简介

阅读本文前请先确保看过下边的文章:

创建存储过程

和都属于,都是对某些语句的一个封装。侧重于执行这些语句并返回一个值,而更侧重于单纯的去执行这些语句。先看一下的定义语句:

与最直观的不同点就是,的定义不需要声明。为了更直观的理解,我们先定义一个看看:

我们建立了一个名叫的存储过程,它接收两个参数,一个是类型的,一个是类型的。这个存储过程做了3件事儿,一件是查询一下表中的数据,第二件是根据接收的参数来向表中插入一条语句,第三件是再次查询一下表中的数据。

存储过程的调用

执行语句并返回一个值,所以常用在表达式中。偏向于调用那些语句,并不能用在表达式中,我们需要显式的使用语句来调用一个:

比方说我们调用一下存储过程可以这么写:

从执行结果中可以看到,存储过程在执行中产生的所有结果集,全部将会被显示到客户端。

查看和删除存储过程

与类似,也有相似的查看和删除语句,我们下边只列举一下相关语句,就不举例子了。

查看当前数据库中创建的都有哪些的语句:

查看某个定义的语句:

删除的语句:

存储过程中的语句

上边在唠叨中使用到的各种语句,包括变量的使用、判断、循环结构、注释的使用都可以被用在中,这里就不再赘述了。

存储过程的参数类型

比牛逼的一点是,在定义参数的时候可以选择参数类型(注意!不是数据类型),就像是这个样子:

这个所谓的有下边3种:

这么直接描述有些生硬哈,我们一个一个来举例子仔细分析一下:

参数类型

先定义一个类型参数是的存储过程:

Query OK, 0 rows affected (0.00 sec)

mysql>delimiter ;

mysql>

这个存储过程只有一个参数,它的参数类型是,这个存储过程实际执行两个语句,第一个语句是用来读取参数的值,第二个语句是给参数赋值。我们调用一下:

我们在客户端定义了一个变量并赋值,因为它是在客户端定义的,所以需要加前缀,然后把它当作参数传给存储过程。从结果中可以看出,第一个读取语句被成功执行,虽然第二个语句没有报错,但是再存储过程执行完毕后,再次查看变量的值并没有改变,这也就是说:IN参数类型的变量只能用于读取,对类型的变量赋值是不会被调用者看到的。

另外,因为对于参数类型是的参数,我们只是想在存储函数执行中使用它,并不需要把执行结果存储到它里边,所以除了让变量作为函数参数,常量也是可以的,比如这样:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712G0MT4700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券