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

iszxjhcz  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(564)

我有这样的通话记录

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的正确语法(在第30.297行调用report\u procedure('2013-02-01',now(),'2015-01-01','1')
有人能给我推荐一个方法来调用mysql中select语句中的存储过程吗??

bgtovc5b

bgtovc5b1#

--首先,您的存储过程应该如下所示:

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
sshcrbum

sshcrbum2#

无法在from子句中使用过程的结果集。mysql不允许这样做。
可以在过程中填充另一个表(或临时表),然后在select命令中使用该表-

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

相关问题