在mysql中使用存储过程插入日期维度date时出错

在mysql中使用存储过程插入日期维度date时出错,mysql,date,stored-procedures,Mysql,Date,Stored Procedures,我使用以下存储过程填充日期维度。它给出了以下错误 1064-您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在“从日期删除尺寸集v_完整日期=开始日期”附近 第6行的v_完整日期

我使用以下存储过程填充日期维度。它给出了以下错误

1064-您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在“从日期删除尺寸集v_完整日期=开始日期”附近 第6行的v_完整日期
你必须给陈述划界。试试这个:

DELIMITER $$

CREATE PROCEDURE datedimbuild (p_start_date DATE, p_end_date DATE)

BEGIN

DECLARE v_full_date DATE;
DELETE FROM Date_Dim;
SET v_full_date = p_start_date;

WHILE v_full_date < p_end_date 
DO
 INSERT INTO Date_Dim 
(
            Full_Date ,
            DayOfMonth ,
            DayOfYear ,
            DayOfWeek ,
            Day_Name ,
            Month_Number,
            Month_Name,
            Year,
            Quarter
  )
 VALUES 
(
            v_full_date,
            DAYOFMONTH(v_full_date),
            DAYOFYEAR(v_full_date),
            DAYOFWEEK(v_full_date),
            DAYNAME(v_full_date),
            MONTH(v_full_date),
            MONTHNAME(v_full_date),
            YEAR(v_full_date),
            QUARTER(v_full_date)
   );

SET v_full_date = DATE_ADD(v_full_date, INTERVAL 1 DAY);

END WHILE;
END $$

DELIMITER ;

你必须给陈述划界。试试这个:

DELIMITER $$

CREATE PROCEDURE datedimbuild (p_start_date DATE, p_end_date DATE)

BEGIN

DECLARE v_full_date DATE;
DELETE FROM Date_Dim;
SET v_full_date = p_start_date;

WHILE v_full_date < p_end_date 
DO
 INSERT INTO Date_Dim 
(
            Full_Date ,
            DayOfMonth ,
            DayOfYear ,
            DayOfWeek ,
            Day_Name ,
            Month_Number,
            Month_Name,
            Year,
            Quarter
  )
 VALUES 
(
            v_full_date,
            DAYOFMONTH(v_full_date),
            DAYOFYEAR(v_full_date),
            DAYOFWEEK(v_full_date),
            DAYNAME(v_full_date),
            MONTH(v_full_date),
            MONTHNAME(v_full_date),
            YEAR(v_full_date),
            QUARTER(v_full_date)
   );

SET v_full_date = DATE_ADD(v_full_date, INTERVAL 1 DAY);

END WHILE;
END $$

DELIMITER ;
使用

使用

DELIMITER |

CREATE PROCEDURE datedimbuild (p_start_date DATE, p_end_date DATE)

BEGIN

DECLARE v_full_date DATE;
DELETE FROM Date_Dim;
SET v_full_date = p_start_date;

WHILE v_full_date < p_end_date 
DO
 INSERT INTO Date_Dim 
(
            Full_Date ,
            DayOfMonth ,
            DayOfYear ,
            DayOfWeek ,
            Day_Name ,
            Month_Number,
            Month_Name,
            Year,
            Quarter
  )
 VALUES 
(
            v_full_date,
            DAYOFMONTH(v_full_date),
            DAYOFYEAR(v_full_date),
            DAYOFWEEK(v_full_date),
            DAYNAME(v_full_date),
            MONTH(v_full_date),
            MONTHNAME(v_full_date),
            YEAR(v_full_date),
            QUARTER(v_full_date)
   );

SET v_full_date = DATE_ADD(v_full_date, INTERVAL 1 DAY);

END WHILE;
END;
|