当前位置: 首页 > news >正文

MySQL调用存储过程和存储函数

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客


《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

MySQL9数据库技术_夏天又到了的博客-CSDN博客

存储过程和存储函数已经定义好了,接下来需要知道如何调用这些过程和函数。存储过程和存储函数有多种调用方法:存储过程必须使用CALL语句调用,并且存储过程和数据库相关,如果要执行其他数据库中的存储过程,需要指定数据库名称,例如CALL dbname.procname;存储函数的调用与MySQL中预定义的函数的调用方式相同。本节将介绍存储过程和存储函数的调用,主要包括调用存储过程的语法、调用存储函数的语法,以及存储过程和存储函数的调用实例。

8.2.1  调用存储过程

存储过程是通过CALL语句进行调用的,语法如下:

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

CALL语句调用一个先前用CREATE PROCEDURE创建的存储过程,其中sp_name为存储过程名称,parameter为存储过程的参数。

【例8.22】定义名为CountProc1的存储过程,然后调用这个存储过程。

定义存储过程的SQL语句如下:

mysql> use test_db;
mysql> DELIMITER //
mysql> CREATE PROCEDURE CountProc1 (IN sid INT, OUT num INT)
    -> BEGIN
    ->   SELECT COUNT(*) INTO num FROM fruits WHERE s_id = sid;
    -> END //

mysql>  DELIMITER ;

调用存储过程的SQL语句如下:

mysql> CALL CountProc1 (101, @num);

查看返回结果:

mysql> SELECT @num;
+------+
| @num |
+------+
|    3  |
+------+

该存储过程返回了s_id=101的水果供应商提供的水果种类,返回值存储在变量num中,使用SELECT查看,返回结果为3。

8.2.2  调用存储函数

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

【例8.23】定义存储函数CountProc2,然后调用这个函数,SQL语句如下:

mysql> DELIMITER //
mysql> CREATE FUNCTION  CountProc2 (sid INT)
    -> RETURNS INT
    -> BEGIN
    -> RETURN (SELECT COUNT(*) FROM fruits WHERE s_id = sid);
    -> END;
    ->//

mysql>  DELIMITER ;

 如果在创建存储函数中报错“you *might* want to use the less safe log_bin_trust_function_creators variable”,需要执行以下代码:

mysql> SET GLOBAL log_bin_trust_function_creators = 1;

调用存储函数:

mysql> SELECT CountProc2(101);
+--------------------+
| Countproc(101)     |   
+--------------------+
|             3      |
+--------------------+
1 row in set (0.00 sec)

可以看到,本例与【例8.22】中返回的结果相同。存储函数和存储过程可以实现相同的功能,读者在实际应用中应该灵活选择。

相关文章:

  • win10中mstsc远程Centos-Stream 9图形化界面
  • 简单几个步骤完成 Oracle 到金仓数据库(KingbaseES)的迁移目标
  • 朝天椒USB服务器:解决加密狗远程连接
  • 软件工程-软件设计
  • Docker 部署 MySQL-5.7 单机版
  • 浏览器网络请求全流程深度解析
  • 网络协议/MQTT Paho.MQTT客户端库接口基础知识
  • 伺服报警的含义
  • win11 终端乱码导致IDE 各种输出也乱码
  • 《手札·行业篇》开源Odoo MES系统与SKF Observer Phoenix API在化工行业的双向对接方案
  • 腾讯云服务器中Ubuntu18.04搭建python3.7.0与TensorFlow1.15.0与R-4.0.3环境
  • Unity使用iTextSharp导出PDF-01准备dll
  • 【Linux】smp_mb__after_atomic
  • 从零到一:基于Rook构建云原生Ceph存储的全面指南(下)
  • Datawhale 数学建模导论二 笔记1
  • 第二天:工具的使用
  • 本地部署DeepSeek Nodejs版
  • 电商平台对接标准化指南:API性能优化与扩展性研究
  • 推荐一款 免费的SSL,自动续期
  • vue-谷歌浏览器安装vue-devtools插件
  • 专业招商代理网址/seo服务外包
  • 东软实训网站开发/免费的网站申请
  • 做网站写代码好还是模板/百度电脑端入口
  • 旅游网站设计页面/seo站
  • 计算机专业学做网站吗/河南品牌网络推广外包
  • 网站qq客服您需要添加对方好友/俄国搜索引擎yandex入口