简体   繁体   English

MySQL存储过程返回表

[英]MySQL stored procedure to return table

I'm trying to create a stored procedure to return data from a table. 我正在尝试创建一个存储过程以从表中返回数据。 I'm using MySQL. 我正在使用MySQL。 this is the code: 这是代码:

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

But when trying to save the procedure I get the following error: 但是,当尝试保存该过程时,出现以下错误:

SQL Error (1064): You have an error in your SQL syntax; SQL错误(1064):您的SQL语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA SQL SECURITY DEFINER COMME' at line 3 在第3行的“ LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA SQL SECURITY DEFINER COMME”附近检查与您的MySQL服务器版本相对应的手册以使用正确的语法

What could be wrong ? 有什么问题吗?

The syntax was incorrect. 语法不正确。 You created a FUNCTION, but needed to create a PROCEDURE that returns result set. 您创建了一个FUNCTION,但是需要创建一个返回结果集的PROCEDURE。 Try this code - 试试这个代码-

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM