【发布时间】:2013-10-25 03:17:00
【问题描述】:
MySQL-问题
我有三个存储过程,它们为不同的条件和连接不同的表提供相同的结果集。
前
procedure_one(StartDate,EndDate);
procedure_two(StartDate,EndDate);
procedure_three(StartDate,EndDate);
我需要另一个存储过程,它将给出上述三个存储过程的结果。以上三个存储过程的简单联合。我不想要 3 个查询的联合,而是我想要 3 个存储过程的联合。我用谷歌搜索,但找不到好的解决方案。
我做了以下几个尝试。
第一次尝试
DELIMITER //
CREATE PROCEDURE `MasterProcedure` (IN StartDate DATE,IN EndDate DATE)
BEGIN
SELECT @CALL procedure_one (StartDate,EndDate) UNION
SELECT @CALL procedure_two (StartDate,EndDate) UNION
SELECT @CALL procedure_three (StartDate,EndDate);
END //
DELIMITER ;
第二次尝试
DELIMITER //
DECLARE var_val1 TEXT;
DECLARE var_val2 TEXT;
DECLARE var_val3 TEXT;
CREATE PROCEDURE `MasterProcedure` (IN StartDate DATE,IN EndDate DATE)
BEGIN
SELECT @CALL procedure_one (StartDate,EndDate) INTO @var_val1;
SELECT @CALL procedure_two (StartDate,EndDate) INTO @var_val2;
SELECT @CALL procedure_three (StartDate,EndDate) INTO @var_val3;
SELECT @var_val1,@var_val2,@var_val3;
END //
DELIMITER ;
是否有任何解决方法来实现这一点。提前致谢。
【问题讨论】:
-
存储过程是否返回标量值?什么返回存储过程?
-
@wchiquito 他们将返回结果集,如名称、日期、发货日期、订单号、发票号等。
-
我认为 MySQL 目前不支持你需要的东西。尝试一种新方法来满足您的需求。
-
@wchiquito 谢谢兄弟。好像不支持。我会尝试寻找替代方案。
标签: mysql stored-procedures union