如何在mysql中使用select语句调用存储过程

如何在mysql中使用select语句调用存储过程,mysql,select,stored-procedures,Mysql,Select,Stored Procedures,我有一个类似的通话声明 CALL report_procedure ('2013-02-01',now(),'2015-01-01','1'); 我想在select查询中使用它。 我已经试过了 Select * from ( CALL report_procedure ('2013-02-01',now(),'2015-01-01','1')); 但是错误发生了。 像 错误代码:1064。您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near(CALL

我有一个类似的通话声明

 CALL report_procedure
('2013-02-01',now(),'2015-01-01','1');
我想在select查询中使用它。 我已经试过了

Select * from ( CALL report_procedure
    ('2013-02-01',now(),'2015-01-01','1'));
但是错误发生了。 像

错误代码:1064。您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near(CALL report_)过程的语法 ('2013-02-01',现在(),'2015-01-01','1')第3行0.297秒

有人能给我一个方法来调用mysql中Select语句中的存储过程吗?

——首先,您的存储过程应该是这样的:

CREATE PROCEDURE report_procedure(
IN d1 DATE,
dnow DATE,
d2 DATE,
val INT
) 
BEGIN SELECT * 
FROM yourtablename
WHERE date1 = d1
AND datenow > dnow
AND date2 > d2
AND value = val;

END
--The store procedure contains the select statement.

-- then you can call the store procedure like that:
 CALL report_procedure('2013-02-01',now(),'2015-01-01','1');

--hope it helps

无法在from子句中使用过程的结果集。MySQL不允许这样做

您可以在过程中填充另一个表(或临时表),然后在SELECT命令中使用该表-

CALL report_procedure ('2013-02-01',now(),'2015-01-01','1'); -- fill temp_table
SELECT * FROM temp_table;

发布您得到的错误可能有助于ppl解决此问题。这是因为MySQL不允许在select语句中调用过程。请分享您希望通过该过程实现的目标。实际上,我需要使用call语句结果的条件,即存储过程的结果。如果我可以将结果存储在变量中或者在select查询中使用call语句,我将能够使用存储过程的条件