gpt4 book ai didi

mysql - mySQL 中 Create Procedure 的两个 IN 参数

转载 作者:行者123 更新时间:2023-11-29 05:51:35 25 4
gpt4 key购买 nike

我正在创建一个程序,返回用户输入的两个日期之间的销售总额。我认为这是草率的代码,但我无法让它运行,而且我已经更改了很多次。我担心我离答案更远而不是更近。这是我的代码:

DELIMITER //
CREATE PROCEDURE salesBetween (IN date1(date), date2(date),
OUT totalsale(decimal(10,2)))
BEGIN
SELECT SUM(hslineitem.numOrdered * hslineitem.price)
FROM hslineitem, hsorders
WHERE hsorders.orderId = hslineitem.orderId
AND (hsorders.orderDate BETWEEN date1 AND date2)
AND orderdate = date1, date2;
END //
DELIMITER ;

这是我第一次尝试使用多个用户输入,所以我猜我的问题与此有关。我在网上能找到的大多数东西都不是 mysql 特定的,所以它没有太大帮助。

最佳答案

请不要使用基于旧逗号的隐式连接并使用现代 Explicit Join based syntax

此外,我没有看到 AND orderdate = date1, date2; 的目的,而且它在语法上也是错误的。我已经删除了它。

DELIMITER //
CREATE PROCEDURE salesBetween (IN date1 date, /* no brackets needed around datatype */
IN date2 date, /* specify IN for this parameter */
OUT totalsale decimal(10,2))
BEGIN
SELECT SUM(hslineitem.numOrdered * hslineitem.price) INTO totalsale
FROM hslineitem /* Changed to JOIN .. ON syntax */
JOIN hsorders ON hsorders.orderId = hslineitem.orderId
WHERE (hsorders.orderDate BETWEEN date1 AND date2);
END //
DELIMITER ;

关于mysql - mySQL 中 Create Procedure 的两个 IN 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53462026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com