MySQL教程109-MySQL调用存储过程和函数

存储过程和存储函数都是存储在服务器端的 SQL 语句集合。要想使用这些已经定义好的存储过程和存储函数就必须要通过调用的方式来实现。

存储过程通过 CALL 语句来调用,存储函数的使用方法与 MySQL 内部函数的使用方法相同。执行存储过程和存储函数需要拥有 EXECUTE 权限(EXECUTE 权限的信息存储在 information_schema 数据库下的 USER_PRIVILEGES 表中)。

这里主要讲解如何调用存储过程和存储函数。

调用存储过程

MySQL 中使用 CALL 语句来调用存储过程。调用存储过程后,数据库系统将执行存储过程中的 SQL 语句,然后将结果返回给输出值。

CALL 语句接收存储过程的名字以及需要传递给它的任意参数,基本语法形式如下:

CALL sp_name([parameter[...]]);

其中,sp_name 表示存储过程的名称,parameter 表示存储过程的参数。

例 1

下面调用之前创建的存储过程GetAgeByStu,SQL 语句和执行过程如下:

复制代码
mysql> call GetAgeByStu('Dany');
+------+
| age  |
+------+
|   25 |
+------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)
复制代码
复制代码
mysql> call GetAgeByStu('Tom');
+------+
| age  |
+------+
|   23 |
+------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)
复制代码

上面的两次调用同一个存储过程, 只是传递的参数不同而已.

因为存储过程实际上也是一种函数,所以存储过程名后需要有( )符号,即使不传递参数也需要。

调用存储函数

在 MySQL 中,存储函数的使用方法与 MySQL 内部函数的使用方法是一样的。换言之,用户自己定义的存储函数与 MySQL 内部函数是一个性质的。区别在于,存储函数是用户自己定义的,而内部函数是 MySQL 开发者定义的。

例 2

下面调用之前章节中创建的存储函数func_get_name,SQL 语句和执行过程如下:

复制代码
mysql> select func_get_name(1);  // 参数是1
+------------------+
| func_get_name(1) |
+------------------+
| Dany             |
+------------------+
1 row in set, 1 warning (0.06 sec)

mysql> select func_get_name(2);  // 参数是2
+------------------+
| func_get_name(2) |
+------------------+
| Green            |
+------------------+
1 row in set (0.00 sec)
复制代码

通过例 1 和例 2 的比较,可以看出虽然存储函数和存储过程的定义稍有不同,但它们都可以实现相同的功能,我们应该在实际应用中灵活选择。

posted @   KILLNPE  阅读(1182)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示