最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql存储过程返回多个结果集

来源:动视网 责编:小采 时间:2020-11-09 08:35:31
文档

mysql存储过程返回多个结果集

mysql存储过程返回多个结果集:本篇文章将介绍存储过程返回多个结果集时是什么结果,希望给大家以参考作用。mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的结构:mysql> desc orders; +---
推荐度:
导读mysql存储过程返回多个结果集:本篇文章将介绍存储过程返回多个结果集时是什么结果,希望给大家以参考作用。mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的结构:mysql> desc orders; +---
 本篇文章将介绍存储过程返回多个结果集时是什么结果,希望给大家以参考作用。

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

文档

mysql存储过程返回多个结果集

mysql存储过程返回多个结果集:本篇文章将介绍存储过程返回多个结果集时是什么结果,希望给大家以参考作用。mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的结构:mysql> desc orders; +---
推荐度:
标签: 过程 返回 多个
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top