mysql,如何定义和使用数据库存储过程stored procedure?
发布于 作者:苏南大叔 来源:程序如此灵动~

对于存储在数据库里面的数据进行复杂处理逻辑的话,对于普通程序员来说,一般会在代码逻辑(比如php
、java
等)上进行处理。然而,对于高级程序员或者是数据库管理员来说,都是通过创建数据库端的函数(function
)、触发器(trigger
)或者存储过程(procedure
)来进行的。本文以mysql
为例,描述其中最复杂的存储过程(Stored Procedure
)。

大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验。本文描述mysql
的存储过程的定义及使用方法。测试环境:win10
,mysql@5.7.26
,MySQLFront@5.3
,mysql client@5.7.26
。
前文提要
正如文初所描述的那样,存储过程和函数是同级别的mysql
概念,而函数function
的概念,已经在上一篇文章中,进行过描述。参考链接:
存储过程和函数的定义和使用,是非常类似的。这里先回顾一下函数的定义和使用。
定义函数:
调用函数:
存储过程的定义和使用
定义存储过程:
这里没有像函数定义一样,使用returns
或者return
字样,但是存储过程能返回很多值(函数仅仅能返回一个值)。存储过程的参数和返回值都定义到了一起,使用IN
或者OUT
进行区分。
IN
就是入参,就是传递进来的参数。OUT
就是返回值,返回的数据会被定义到这个位置。INOUT
就是既是参数也是返回值,接收的参数会被返回值覆盖。- 当然可以没有任何参数(意味着可以没有返回值,强烈对比于函数的定义)
在函数体里面,还可能使用到下面的语法:
DECLARE
,用来声明变量。SET
,赋值语句,用于对变量进行赋值。SELECT… INTO
,也是个赋值语句。把从数据表中查询的结果存放到变量中。
调用方式
调用存储过程:
测试用例
这里采用的数据集还是原来的users
和posts
的例子,下面的文章里面有相关定义。自取。
测试用例一
测试用例二

删除存储过程
查看存储过程
相关文章
- https://newsn.net/say/mysql-procedure.html
- https://newsn.net/say/mysql-left-join.html
- https://newsn.net/say/mysql-inner-join.html
总结
本文并没有详细描述存储过程的详细调试过程,待续。更多mysql
文章,苏南大叔放在了下面的链接里面。


