我在尝试在MySQL中创建过程时遇到此错误:
Error Code: 1337
Variable or condition declaration after cursor or handler declaration
Run Code Online (Sandbox Code Playgroud)
即使做了很多谷歌搜索后,我发现没有相关的解决方案来解决我的问题.我的程序如下:
DELIMITER //
CREATE PROCEDURE emp_dates(IN startDate DATE, IN endDate DATE)
BEGIN
DECLARE fromDt DATETIME;
DECLARE toDt DATETIME;
DECLARE done INT DEFAULT FALSE;
DECLARE employees CURSOR FOR SELECT empid FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE;
DECLARE emp VARCHAR(20);
SET fromDt=startDate;
SET toDt=endDate;
OPEN employees;
WHILE fromDt<=toDt DO
REPEAT
FETCH employees INTO emp;
IF NOT done THEN
INSERT INTO new_attendance_2(attid,empid,dt) VALUES(DEFAULT,emp,fromDt);
END IF
UNTIL done END REPEAT;
SET fromDt=DATE_ADD(fromDt, INTERVAL 1 DAY);
LOOP
CLOSE employees;
END
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
目的是创建一个过程,该过程将两个日期作为输入,并在其他表中插入记录,以便在这两个日期之间进行.有人请帮忙!我很感激任何帮助.非常感谢提前.
pax*_*blo 26
这显然是抱怨:
Variable or condition declaration after cursor or handler declaration
Run Code Online (Sandbox Code Playgroud)
所以我会在这里看到你确实在游标和处理程序之后声明变量:
DECLARE employees CURSOR FOR SELECT empid FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE;
>> DECLARE emp VARCHAR(20);
Run Code Online (Sandbox Code Playgroud)
如果你这样修改你的声明,它应该没问题:
DECLARE fromDt DATETIME;
DECLARE toDt DATETIME;
DECLARE done INT DEFAULT FALSE;
DECLARE emp VARCHAR(20);
DECLARE employees CURSOR FOR SELECT empid FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE;
Run Code Online (Sandbox Code Playgroud)
顺序必须是,按照这里:
游标声明必须出现在处理程序声明之前以及变量和条件声明之后.
归档时间: |
|
查看次数: |
13578 次 |
最近记录: |