MySQL存储过程返回表

时间:2013-11-28 13:41:59

标签: mysql sql

我正在尝试创建一个存储过程来从表中返回数据。我正在使用MySQL。 这是代码:

CREATE DEFINER=`imswms`@`10.0.90.%` FUNCTION `sp_daily_numbers_by_man_and_prod`(`man` VARCHAR(100), `startDate` DATETIME, `endDate` DATETIME)
RETURNS SET
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN
select * from dailynumbersdetails 
 where dailynumbersdetails.PostDate >= startDate 
    and dailynumbersdetails.PostDate < endDate 
    and dailynumbersdetails.Manufacturer = man 
    group by dailynumbersdetails.PartNumber;
END

但是在尝试保存程序时,我收到以下错误:

  

SQL错误(1064):您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第3行使用“LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA SQL SECURITY DEFINER COMME”附近的正确语法

可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

语法不正确。您创建了一个FUNCTION,但需要创建一个返回结果集的PROCEDURE。试试这段代码 -

CREATE DEFINER = 'imswms'@'10.0.90.%'
PROCEDURE `sp_daily_numbers_by_man_and_prod` (`man` VARCHAR(100), `startDate` DATETIME, `endDate` DATETIME)
SQL SECURITY DEFINER
COMMENT ''
BEGIN
  SELECT * FROM dailynumbersdetails
  WHERE dailynumbersdetails.PostDate >= startDate
  AND dailynumbersdetails.PostDate < endDate
  AND dailynumbersdetails.Manufacturer = man
  GROUP BY dailynumbersdetails.PartNumber;
END