如何将一个存储过程输出(ResultSet或表)作为表处理到另一个存储过程中

时间:2017-06-22 16:23:35

标签: mysql stored-procedures

一个存储过程正在返回一个表,我想将该结果保存到另一个存储过程中。 我面临SQL语法错误。

首次存储过程

DELIMITER $$
USE `dataBase`$$
DROP PROCEDURE IF EXISTS `testReturnTable`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `testReturnTable`()
BEGIN
    SELECT `user_id`, `email` FROM `users`;
END$$
DELIMITER ;

我试图将此存储过程称为另一个,并希望将数据保存到视图或表中

DELIMITER $$
USE `dataBase`$$
DROP PROCEDURE IF EXISTS `testReturnCall`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `testReturnCall`()
BEGIN
    DROP VIEW IF EXISTS `my_view`;
    CREATE OR REPLACE VIEW my_view AS (CALL testReturnTable());
    SELECT * FROM my_view;
END$$
DELIMITER ;

并收到错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CALL testReturnTable());

我也可以在这里使用函数,但我不知道如何处理结果集, 请建议。

1 个答案:

答案 0 :(得分:1)

无法将表输出从一个存储过程转移到另一个存储过程。但我们有替代方法,这是Temp表