gpt4 book ai didi

mysql - DECLARE 在此位置无效,需要 EOF

转载 作者:行者123 更新时间:2023-12-03 16:21:04 24 4
gpt4 key购买 nike

我是 SQL 的新手,我试图在我预先指定的 2 个日期内生成日期。我正在使用下面的代码,但我在 MySQL 工作台中收到一个错误,指出“DECLARE 在这个位置无效”......我做错了什么?

DELIMITER $$
CREATE PROCEDURE proc()
BEGIN

DECLARE @dates TABLE(dt datetime)
DECLARE @dateFrom datetime
DECLARE @dateTo datetime

SET @dateFrom = '2001/01/01'
SET @dateTo = '2001/01/12'


WHILE(@dateFrom < @dateTo)
BEGIN
SELECT @dateFrom = DATEADD(day, 1,@dateFrom)
INSERT INTO @dates
SELECT @dateFrom
END
END$$

DELIMITER ;

最佳答案

语法错误是因为你忘记了 ;在每个语句之后。

还有其他问题:

  • MySQL 没有表变量。为此使用临时表。
  • 您不需要声明以 @ 开头的用户变量。 .使它们成为普通变量。
  • 要从变量中插入值,请使用 VALUES而不是 SELECT .
  • DATEADD不是 MySQL 函数。它有 DATE_ADD ,但语法与您使用的不同。
  • DELIMITER $$
    CREATE PROCEDURE proc()
    BEGIN

    DECLARE dateFrom datetime;
    DECLARE dateTo datetime;

    SET dateFrom = '2001-01-01';
    SET dateTo = '2001-01-12';

    CREATE TEMPORARY TABLE dates (
    dt datetime
    );

    WHILE(dateFrom < dateTo)
    BEGIN
    SET dateFrom = DATE_ADD(dateFrom, INTERVAL 1 DAY);
    INSERT INTO dates VALUES (dateFrom);
    END WHILE;
    END$$

    DELIMITER ;

    关于mysql - DECLARE 在此位置无效,需要 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62217194/

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