怎么在mysql存储过程中返回多个值
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,本篇文章为大家展示了怎么在mysql存储过程中返回多个值,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。mysql存储函数只返回一个值。要开发返回多个值的存储过
千家信息网最后更新 2025年11月10日怎么在mysql存储过程中返回多个值
本篇文章为大家展示了怎么在mysql存储过程中返回多个值,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的结构:
mysql> desc orders;+----------------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------------+-------------+------+-----+---------+-------+| orderNumber | int(11) | NO | PRI | NULL | || orderDate | date | NO | | NULL | || requiredDate | date | NO | | NULL | || shippedDate | date | YES | | NULL | || status | varchar(15) | NO | | NULL | || comments | text | YES | | NULL | || customerNumber | int(11) | NO | MUL | NULL | |+----------------+-------------+------+-----+---------+-------+7 rows in set
然后嘞,咱们来看一个存储过程,它接受客户编号,并返回发货(shipped),取消(canceled),解决(resolved)和争议(disputed)的订单总数:
DELIMITER $$CREATE PROCEDURE get_order_by_cust( IN cust_no INT, OUT shipped INT, OUT canceled INT, OUT resolved INT, OUT disputed INT)BEGIN -- shipped SELECT count(*) INTO shipped FROM orders WHERE customerNumber = cust_no AND status = 'Shipped'; -- canceled SELECT count(*) INTO canceled FROM orders WHERE customerNumber = cust_no AND status = 'Canceled'; -- resolved SELECT count(*) INTO resolved FROM orders WHERE customerNumber = cust_no AND status = 'Resolved'; -- disputed SELECT count(*) INTO disputed FROM orders WHERE customerNumber = cust_no AND status = 'Disputed';END
其实,除IN参数之外,存储过程还需要4个额外的OUT参数:shipped, canceled, resolved 和 disputed。 在存储过程中,使用带有count函数的select语句根据订单状态获取相应的订单总数,并将其分配给相应的参数。按着上面的sql,我们如果要使用get_order_by_cust存储过程,可以传递客户编号和四个用户定义的变量来获取输出值。执行存储过程后,我们再使用SELECT语句输出变量值:
+----------+-----------+-----------+-----------+| @shipped | @canceled | @resolved | @disputed |+----------+-----------+-----------+-----------+| 22 | 0 | 1 | 1 |+----------+-----------+-----------+-----------+1 row in set
结合实际应用,我们再来看下从PHP程序中调用返回多个值的存储过程:
prepare($sql); $stmt->bindParam(':no', $customerNumber, PDO::PARAM_INT); $stmt->execute(); $stmt->closeCursor(); // execute the second query to get values from OUT parameter $r = $pdo->query("SELECT @shipped,@canceled,@resolved,@disputed") ->fetch(PDO::FETCH_ASSOC); if ($r) { printf('Shipped: %d, Canceled: %d, Resolved: %d, Disputed: %d', $r['@shipped'], $r['@canceled'], $r['@resolved'], $r['@disputed']); } } catch (PDOException $pe) { die("Error occurred:" . $pe->getMessage()); }}call_sp(141);上述内容就是怎么在mysql存储过程中返回多个值,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
存储
过程
多个
参数
订单
内容
函数
客户
总数
技能
知识
语句
输出
简明
简明扼要
变量
实际
就是
文章
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
奥丁审判服务器忙怎样修改ip
软件开发与销售服务合同
t640服务器面板指示灯
github 网络安全
个人对网络安全有哪些防护
数据库导入超时
修改win10 网络安全设置
浙江潮流软件开发价格参考价格
企业内部服务器配置选择
营销类奖金制度软件开发
学习云计算和软件开发哪个好
尖峰软件开发公司
ssh实体类和数据库表
软件开发依据的标准
stm32 下载软件开发
火影忍者手游服务器太卡
软件开发员工退税政策
项阳 网络安全
微博网络安全技术的大牛
浅析身边的网络安全800
dota2东南亚服务器调成国服
网络安全工程师微信
我的世界服务器新手礼包复制指令
郴州市公安局网络安全管理
参加软件开发
阿里云服务器无影主机
浩达游戏软件开发
网络安全法是否属于刑法
服务器E161
软件开发基础知识讲座