天天看点

SQL第30课~输出参数,变量和函数+Other Conventions

作者:小饼干笔记

所有内容收录在合集~MySQL入门到熟练。欢迎点赞关注我哦~

输出参数 Output Parameters

SQL第30课~输出参数,变量和函数+Other Conventions

使用参数可以为存储过程传递值,我们还可以用参数给调用程序返回值。

首先还是来创建一个新的过程,这次表格用中文,英文实在看着眼花。

创建的表格长这样,然后查询为payment_total为0 的值,比如id是5的

SQL第30课~输出参数,变量和函数+Other Conventions

得出结果

SQL第30课~输出参数,变量和函数+Other Conventions

这个时候,所有的存储过程中,系数都是输入参数,代表着只有在给过程传递值的时候才可以使用他们。

那么out代表输出,我们只要去前面添加out关键字的前缀,就可以标记为输出参数。这样可以从过程中获取这些值。

然后把这两项插入,就是用into,添加在select后面

读取数据,复制到输出参数。

这个时候会报错,

SQL第30课~输出参数,变量和函数+Other Conventions

显示的是这个内容。因为我又手滑把字打错了!!!而且检查了半天才发现,气死了!!!

SQL第30课~输出参数,变量和函数+Other Conventions

修改正确之后,打开是这个页面

SQL第30课~输出参数,变量和函数+Other Conventions

和EXCEL一样,有3个参数,直接输入id,得到这个页面。

SQL第30课~输出参数,变量和函数+Other Conventions

这里定义了2个变量,发票计数和发票总计,这是用户变量,变量就是我们用来存储单一值的对象。用@符号做前缀来定义变量,使用set语句,初始值为0,进行调用的时候,需要传递变量,第一参数是id,另外的参数就是先前定义的变量了。调用之后,用select,选择语句来读取,并在此显示。

小结:真心不好用,学习的时候需要学,之后尽可能不用吧。

变量 Variables

一:定义用户变量,使用SET语句定义用户变量,并加上@前缀。

使用变量的时候,一般在调用有输出参数的存储过程时。

传递变量,来获取输出的参数值。

变量在过程中会被保存,如果断线的话,就会被清空。所以称为用户或者会话变量。

即 User or seesion variables

二:本地变量 Local variables

在存储过程和函数内定义的变量

本地变量不会在会话中保存。如果我们的存储过程完成执行任务,这些变量就被清光了。一般在存储过程中执行计算任务。

打个比方

假设 风险因素=发票总计/发票计数*5

SQL第30课~输出参数,变量和函数+Other Conventions

这个时候就可以使用本地变量了。首先在begin后面申明变量,使用declear,强调风险因素。然后规定一下是什么类型的风险。

申明几项中重要的细节。

SQL第30课~输出参数,变量和函数+Other Conventions

然后写选择语句进行申明,还是先写select,然后from

接着读取这些值,并放入变量中,插入就是into语句,

插入的变量对应选择的变量,注意细节,不要有错误,比如一些s的多或者少,from后面添加分号。

SQL第30课~输出参数,变量和函数+Other Conventions

然后开始计算风险的值,用set

set risk_factor=invoices_total/invoices_count*5

最后再加一个select

select risk_factor;

以上。

本地变量只有在存储过程中才有意义。书写代码申明,就可以进行使用了。执行完过程之后,就可以被抹去了。

函数 Functions

之前已经说了很多简单的内置函数,sum,MAX,min等聚合函数。还有日期函数和文本函数。

然后可以创建自己的函数了

过程类似于创建一个存储过程。不同点是函数只能返回一个单一值,不能返回多行多列的结果集。如果只想返回单一值,可以试试创建函数。

比如试试风险因素的计算

直接在左边,右键就可以创建函数了

SQL第30课~输出参数,变量和函数+Other Conventions

开头的句子类似存储过程,create后面跟着名字,然后是括号,括号中定义参数,比如客户id。类型int,然后是returns语句,这个最明显的不同。明确了函数返回值的类型。可以是int,INTEGER,或者其他任何Mysql中的数据类型。

returns后跟着的是函数的属性,每个Mysql有至少一个属性

属性

1 DETERMIN 确定性,如果我们给予这个函数同样的一组值,它会永远返回一样的值

现实中的应用场景,可以是计算发货量,计算订单量等,或者计算返现,比如返现是支付订单的10%,写上选择语句,最后永远需要返回某个值。

2 READS SQL DATA

函数中会配置一些选择语句,用以读取一些数据。

3 MODIFIES SQL DATA

修改SQL数据,函数中有修改,更新或删除

属性可以有多种,不只一个

在这个案例中,一个人可能不只一笔订单,风险因素也会改变。使用选择语句读取数据,READS SQL DATA,不修改内容,所以不用MODIFIES SQL DATA

SQL第30课~输出参数,变量和函数+Other Conventions
SQL第30课~输出参数,变量和函数+Other Conventions

成功创建函数。然后就可以在选取语句中使用函数,就像内置函数一样方便。

SQL第30课~输出参数,变量和函数+Other Conventions

直接用

select *

风险(client_id)

from clients

其他约定 Other Conventions

其实就是一些细节,没有固定规定的,注意入乡随俗就好。