SQL 语法错误 #1064 游标 (mysql)?
SQL Syntax error #1064 cursors (mysql)?
所以我的程序看起来像这样:
OPEN tstamp_cursor;
get_timestamp: LOOP
FETCH tstamp_cursor INTO cSID, ctstamp;
IF finished = 1 THEN
LEAVE get_timestamp ;
END IF;
SET @MID = 0;
SET @MX = 0;
SET @MY = 0;
SET @MT = 0;
SELECT @MID:=m.vID, @MX:=m.x , @MY:=m.y , @MT:=m.timestamp FROM movement m
WHERE m.vID = cSID
AND m.timestamp = (SELECT MAX(T.timestamp)
FROM (SELECT mm.timestamp FROM movement mm WHERE mm.vID = cSID AND mm.timestamp <= ctstamp)AS T);
IF @MT = '0000-00-00 00:00:00' THEN
SELECT @MID:=m.vID, @MX:=m.x , @MY:=m.y , @MT:=m.timestamp FROM movement m
WHERE m.vID = cSID
AND m.timestamp = (SELECT MIN(T.timestamp)
FROM (SELECT mm.timestamp FROM movement mm WHERE mm.vID = cSID AND mm.timestamp >= ctstamp)AS T);
INSERT INTO communicationLocation(`ctimestamp`,`vID`,`x`,`y`,`mtimestamp`) #to insert into every row
VALUES(ctstamp,@MID,@MX,@MY,@MT);
END LOOP get_timestamp;
close tstamp_cursor;
END
;
其中 cSID
和 ctstamp
是游标变量。
我得到这个错误:
#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use near
'LOOP get_timestamp;
close tstamp_cursor;
END' at line 50
我不明白哪里出了问题...是 IF
声明吗?因为我的意思是,如果没有 IF
语句,我不会收到错误...但我也不知道 IF
语句有什么问题。
任何帮助将不胜感激,谢谢!!
编辑
我需要将其变成 SELECT...IF
类似 this 的问题吗?
缺少第二个 IF 的 END IF。
所以我的程序看起来像这样:
OPEN tstamp_cursor;
get_timestamp: LOOP
FETCH tstamp_cursor INTO cSID, ctstamp;
IF finished = 1 THEN
LEAVE get_timestamp ;
END IF;
SET @MID = 0;
SET @MX = 0;
SET @MY = 0;
SET @MT = 0;
SELECT @MID:=m.vID, @MX:=m.x , @MY:=m.y , @MT:=m.timestamp FROM movement m
WHERE m.vID = cSID
AND m.timestamp = (SELECT MAX(T.timestamp)
FROM (SELECT mm.timestamp FROM movement mm WHERE mm.vID = cSID AND mm.timestamp <= ctstamp)AS T);
IF @MT = '0000-00-00 00:00:00' THEN
SELECT @MID:=m.vID, @MX:=m.x , @MY:=m.y , @MT:=m.timestamp FROM movement m
WHERE m.vID = cSID
AND m.timestamp = (SELECT MIN(T.timestamp)
FROM (SELECT mm.timestamp FROM movement mm WHERE mm.vID = cSID AND mm.timestamp >= ctstamp)AS T);
INSERT INTO communicationLocation(`ctimestamp`,`vID`,`x`,`y`,`mtimestamp`) #to insert into every row
VALUES(ctstamp,@MID,@MX,@MY,@MT);
END LOOP get_timestamp;
close tstamp_cursor;
END
;
其中 cSID
和 ctstamp
是游标变量。
我得到这个错误:
#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use near
'LOOP get_timestamp;
close tstamp_cursor;
END' at line 50
我不明白哪里出了问题...是 IF
声明吗?因为我的意思是,如果没有 IF
语句,我不会收到错误...但我也不知道 IF
语句有什么问题。
任何帮助将不胜感激,谢谢!!
编辑
我需要将其变成 SELECT...IF
类似 this 的问题吗?
缺少第二个 IF 的 END IF。