【发布时间】:2017-02-07 11:44:11
【问题描述】:
我正在尝试创建一个存储过程,该过程将执行显示为结束前行的选择。它会从我的用户表中获取最早的 StartDate 和最新的 EndDate,并从我的参考日历表中选择这些日期之间的所有日期。不幸的是,无论我尝试使用什么语法,在将用户表选择中的值分配给开始/结束日变量时,我总是会收到一条错误消息。我没有从我看到的示例中找到许多指定正确语法的资源,我尝试了以下方法。
DELIMITER $$
CREATE PROCEDURE seldays()
BEGIN
DECLARE startday DATE;
SET startday = (SELECT MIN(StartDate) from user1table1);
DECLARE endday DATE;
SET endday = (SELECT MAX(EndDate) from user1table1);
SELECT calendar_date FROM calendar WHERE calendar_date >= startday AND calendar_date< endday;
END $$
DELIMITER ;
我也尝试过这样赋值
SELECT MIN(StartDate) from user1table1 INTO endday;
无济于事。我也许可以在不存储这些变量的情况下使程序工作——但无论如何我迟早会需要使用它。 那么如何在Mysql中正确地用查询结果填充局部变量呢?
【问题讨论】:
-
为什么不简单
SELECT calendar_date FROM calendar c, (SELECT MIN(StartDate) mindate, MAX(StartDate) maxdate from user1table1) u where c.calendar_date >= u.mindate and c.calendar_date <= u.maxdate)?为什么是过程而不是简单的选择? -
声明变量应该在顶部
-
谢谢 Ankit Agrawal,我错过了这么简单的事情
标签: mysql sql stored-procedures local-variables