【问题标题】:SQL Syntax error #1064 cursors (mysql)?SQL 语法错误 #1064 游标(mysql)?
【发布时间】: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

;        

其中cSIDctstamp 是游标变量。 我得到这个错误:

#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


【解决方案1】:

第二个 IF 的 END IF 缺失。

【讨论】:

  • 天啊。你真的是一个救生员。这是一个非常愚蠢的错误,毫无疑问,如果没有你的帮助,我会坐在这里试图再解决半个小时。谢谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 2023-02-24
  • 2016-03-10
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
相关资源
最近更新 更多