简介
更多基础知识可参考MySQL存储过程,很棒很详细的入门文章。
SQL 语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定工程的SQL语句集,经编译后存储在数据库中,用户通过制定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
个人感觉存储过程增强了兼容性。实现相对复杂的功能(比如返回一组数据,然后遍历结果集),之前可能要用python操作mysql来实现。但是利用存储过程可以写成一组代码,使用者可以直接复制粘贴到MySQL shell或者客户端来使用。
自己写的存储过程
1 | drop procedure if exists A; --如果存在存储过程A,则删除 |
存储过程参数
- IN 只进不出,即存储过程会接受传入的变量,但是存储过程内部对该变量的修改不会返回
- OUT 只出不进,即存储过程接收到的变量的值一定为空,无论传入的值是什么,且内部的修改会返回。
- INOUT 有进有出,存储过程接受传入的变量,且内部做的修改会返回。
需要注意的点
- 形如下面这样的变量定义语句一定要紧跟在存储变量的
begin
之后写,否则会报错
1 | declare s int default 0; |