【发布时间】:2015-06-15 20:56:44
【问题描述】:
所以我的程序看起来像这样:
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 的问题吗?
【问题讨论】:
-
LOOP 从哪里开始???
-
@v.eigler 我的错,我加了!
标签: mysql sql if-statement stored-procedures cursor