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

时间:2015-08-20 12:15:31

标签: mysql select stored-procedures

我有像

这样的电话陈述
 CALL report_procedure
('2013-02-01',now(),'2015-01-01','1');

我希望在选择查询中使用它。 我试过像

Select * from ( CALL report_procedure
    ('2013-02-01',now(),'2015-01-01','1'));

但发生错误。 喜欢

  

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

任何人都可以建议我在mysql中的Select语句中调用存储过程的方法吗?

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:-4)

- 首先,您的商店程序应如下所示:

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