在 MySQL- 新用户中创建存储函数/过程
Creating a Stored Function/ Procedure in MySQL- New User
使用来自该站点的数据:https://www.sqlservertutorial.net/sql-server-sample-database/
我收到提示
Create a stored function called findStoreByProduct() that will take a string as
input, and return a store_id. The store_id relates to the store with the largest
stock the product identified in the input string.
谁能先说说存储函数和存储过程的区别?我对此仍然有些迷茫。我已经浏览了关于同一问题的其他 Whosebug 帖子,但仍然一片空白。
那么有人可以帮助我理解 how/where 开始吗?我的第一个想法是 link 使用子查询的三个表(产品、订单项和订单),但显然它应该比这更基本。
@Imran Faruqi
我以为我已经在你的帮助下解决了这个问题,但我认为我的代码有问题,因为尽管我有 select 语句,但我一直得到相同的输出。
DELIMITER //
CREATE function findStoreByProduct (product_name VARCHAR(300))
RETURNS INT DETERMINISTIC
BEGIN
DECLARE storeID INT;
DECLARE storeQuantity INT;
SELECT s.store_id from stocks as s
INNER JOIN
products AS p
ON s.product_id = p.product_id
ORDER BY p.product_id DESC
LIMIT 1
INTO storeID;
RETURN(storeID);
END //
SELECT findStoreByProduct("Trek XM700+ - 2018");
无论我在函数中输入什么,我总是得到相同的结果“1”。有什么想法吗?
This SO Post 定义存储过程与函数。
Then can someone aid me in understanding how/where to start?
首先,您需要创建一个标量函数,它将 return 只有一个值,即整数值。
通过产品名称(在函数参数中提供)查找product_id
。
找到数量最多的商店,其次是上面获得的product_id
。您可以使用聚合函数实现这一点(此处将使用 MAX())。确保按 product_id
分组
另一种策略:
您可以在这两个表之间进行连接并使用 WHERE 子句来匹配产品名称(在函数参数中提供),以及使用上面建议的聚合函数和 GROUP BY 子句。
使用来自该站点的数据:https://www.sqlservertutorial.net/sql-server-sample-database/
我收到提示
Create a stored function called findStoreByProduct() that will take a string as input, and return a store_id. The store_id relates to the store with the largest stock the product identified in the input string.
谁能先说说存储函数和存储过程的区别?我对此仍然有些迷茫。我已经浏览了关于同一问题的其他 Whosebug 帖子,但仍然一片空白。
那么有人可以帮助我理解 how/where 开始吗?我的第一个想法是 link 使用子查询的三个表(产品、订单项和订单),但显然它应该比这更基本。
@Imran Faruqi
我以为我已经在你的帮助下解决了这个问题,但我认为我的代码有问题,因为尽管我有 select 语句,但我一直得到相同的输出。
DELIMITER //
CREATE function findStoreByProduct (product_name VARCHAR(300))
RETURNS INT DETERMINISTIC
BEGIN
DECLARE storeID INT;
DECLARE storeQuantity INT;
SELECT s.store_id from stocks as s
INNER JOIN
products AS p
ON s.product_id = p.product_id
ORDER BY p.product_id DESC
LIMIT 1
INTO storeID;
RETURN(storeID);
END //
SELECT findStoreByProduct("Trek XM700+ - 2018");
无论我在函数中输入什么,我总是得到相同的结果“1”。有什么想法吗?
This SO Post 定义存储过程与函数。
Then can someone aid me in understanding how/where to start?
首先,您需要创建一个标量函数,它将 return 只有一个值,即整数值。
通过产品名称(在函数参数中提供)查找
product_id
。找到数量最多的商店,其次是上面获得的
product_id
。您可以使用聚合函数实现这一点(此处将使用 MAX())。确保按product_id
分组
另一种策略:
您可以在这两个表之间进行连接并使用 WHERE 子句来匹配产品名称(在函数参数中提供),以及使用上面建议的聚合函数和 GROUP BY 子句。