本篇文章将介绍存储过程返回多个结果集时是什么结果,希望给大家以参考作用。

%ign%ignore_a_1%re_a_1%存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。
咱们先来看一个orders表它的结构:
Ai Mailer
使用Ai Mailer轻松制作电子邮件
49 查看详情
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
以上就是mysql存储过程返回多个结果集吗的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1037166.html
微信扫一扫
支付宝扫一扫