MySQL 基础 ———— 存储过程与函数

一、存储过程介绍

存储过程是一组预先编译好的SQL语句的集合,可理解成批处理语句。它的优点主要有以下几点:

1、提高代码的重用性;

2、简化操作;

3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。

二、存储过程的创建

DELIMITER 定界符
CREATE PROCEDURE 存储过程名(形参列表)
BEGIN
    存储过程体(一组合法的SQL语句)
END 定界符

但MySQL实际存储的存储过程定义可能并没有这么简单:

在使用存储过程的时候,一定要注意参数列表中,每个形参的定义都包含三部分:

参数模式 (IN、OUT、INOUT)、参数名、参数类型

例如:

IN stuname VARCHAR(10)

 牢记参数模式分为三种:

IN : 该模式参数仅可以作为输入值使用。

OUT : 该模式参数仅可以作为输出值使用,从存储过程并没有类似函数那样的返回值,通过定义OUT 模式的参数,可以让存储过程携带返回值。

INOUT : 该模式参数既可以作为输入,也可以作为输出。

 另外,如果存储过程体仅有一句话,可以省略 BEGIN 和 END 。存储过程体的每条SQL 语句要求必须以分号结尾

定义存储过程需要设置一个定界符,代表存储过程定义完毕,一般使用 $ 、& 等特殊字符均可。

注意,存储过程一旦创建,将无法修改(存储体),如果希望修改,可以删除后重建。删除存储过程的方法和 DROP TABLE 类似,只是将 TABLE 关键字换为 PROCEDURE 即可。

查看创建好的存储过程可以使用:

SHOW CREATE PROCEDURE 存储过程名;

三、存储过程的调用

CALL 存储过程名(实参列表);

四、MySQL 函数

函数和存储过程很类似,也是是一组预先编译好的SQL语句的集合,类似于批处理语句。提供了代码重用性,简化操作,同时减少了编译次数,并且减少了和数据库服务器的连接次数,提供了效率。

但是和存储过程也有所不同,他们的区别主要是:

存储过程:可以没有返回值,也可以有多个返回值,适合做批量插入,批量更新。

函数:有且仅有 1 个返回值,适合做处理数据后返回一个结果。

五、函数的创建

CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
    函数体
END

参数列表中的每个参数包含两部分:

参数名、参数类型

函数体必须要有 RETURN 语句,并且与"函数签名" 中的 RETURNS 类型相对应,否则会报错。一般将 RETURN 语句放在函数体的最后,其他位置不建议。

函数体如果只有一句话,同样可以像存储过程一样省略 BEGIN 和 END 。

函数定义同样需要 DELIMITER 设置定界符。

六、函数的调用

SELECT 函数名(实参列表);

发布了191 篇原创文章 · 获赞 280 · 访问量 52万+

猜你喜欢

转载自blog.csdn.net/u014745069/article/details/103442365
今日推荐