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 的比较,可以看出虽然存储函数和存储过程的定义稍有不同,但它们都可以实现相同的功能,我们应该在实际应用中灵活选择。
分类:
MySQL教程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)