【MySQL】存储过程和函数
目录
什么是存储过程
存储过程,是经过编译并存储在数据库中的一段SQL
语句集合。
存储过程和函数的区别,在于存储过程无返回值,而函数有返回值。
存储过程的好处
-
提高了代码的重用性。
-
减少了
SQL
语句的编译次数,提高了效率。
存储过程的语法
1. 创建
|
|
说明:
-
参数列表包含三部分:参数模式、参数名、参数类型
-
参数模式有三种:
IN
输入,OUT
输出,INOUT
输入和输出。 -
如果存储过程体只有一句话,
BEGIN
和END
可以省略。 -
存储过程体中,每句
SQL
语句以分号表示结束。 -
在存储过程的结尾
END
处,需要使用DELIMITER
设置的结束标记。
2. 调用
|
|
3. 删除
|
|
4. 查看存储过程
|
|
或者:
|
|
还可以从mysql.proc
中获取存储过程的信息,但是有的版本不支持该方法。
|
|
5. 修改
存储过程无法修改。
示例
1. 无参
定义:
|
|
调用:
|
|
2. IN
定义:
|
|
调用:
|
|
3. OUT
定义:
|
|
调用:
|
|
5. INOUT
定义:
|
|
调用:
|
|
什么是函数
函数和存储过程类似,都是经过编译并存储在数据库中的一段SQL
语句集合。但是函数有且仅有一个返回值,而存储过程没有返回值。
函数的语法
1. 创建函数
|
|
说明:
-
参数列表包含两部分:参数名和参数类型。
-
函数体中必须包含
RETURN
。 -
如果函数体仅有一句话,可以省略
BEGIN
和END
。 -
使用
DELIMITER
语句设置函数结束标记。
2. 调用
|
|
3. 查看函数
|
|
4. 删除函数
|
|
5. 示例
- 无参有返回
定义:
|
|
调用:
|
|
- 有参有返回
定义:
|
|
调用:
|
|
游标
游标用于存储查询的结果集,主要应用于存储过程和函数。
1. 声明
|
|
2. OPEN
|
|
3. FETCH
|
|
4. CLOSE
|
|
5. DECLARE EXIT HANDLER FOR NOT FOUND
在存储过程中,当游标配合循环语句一起使用时,需要知道循环何时结束,此时就需要使用如下机制:
|
|
该语句的含义是,当游标无法获取下一条数据时,就执行FOR NOT FOUND
后面的语句。
6. 示例
|
|