简体   繁体   English

存储过程内部的MySQL循环错误代码#1064 [已修订]

[英]Mysql looping error code #1064 inside stored procedure [revised]

I edited this question cause the answers below mentioned that when using while and begin, it should be inside a stored procedure. 我编辑了这个问题,原因是下面提到的答案提到,在使用while并开始使用时,它应该位于存储过程中。

So now I'm running this inside a stored procedure but I'm still getting an error. 所以现在我在存储过程中运行它,但是仍然出现错误。

counter;
while counter < 2
begin
GOTO counter

SELECT var1 AS LOCATION,
  ROUND(sum(CASE WHEN t2.tagid = var2 THEN t2.floatvalue ELSE 0 END), 2) AS MR
  ROUND(sum(CASE WHEN t2.tagid = var3 THEN t2.floatvalue ELSE 0 END), 2) AS Flw,
  ROUND(sum(CASE WHEN t2.tagid = var4 THEN t2.floatvalue ELSE 0 END), 2) AS Prs,
  ROUND(sum(CASE WHEN t2.tagid = var5 THEN t2.floatvalue ELSE 0 END), 2) AS Lvl
FROM table2 t2

INNER JOIN table1  t1
  ON t1.id = t2.tagid

WHERE t2.t_stamp = (SELECT MAX(t2.t_stamp) 
                    FROM table2  t2 
                    WHERE t1.id = t2.tagid)
counter = counter+1
end

1:
var1
var2
var3
var4
var5

2:
var1
var2
var3
var4
var5

This is the error I'm getting 这是我得到的错误

MySQL said: #1064 -You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'begin GOTO counter SELECT var1 AS LOCATION, ROUND(sum(CASE WHEN t2.tagid' at line 2

And I didn't include the CREATE PROCEDURE cause I saw a post wherein it was easier to just go to the ROUTINES panel and paste the SQL Query without the CREATE, DELIMITER... etc. How should I fix this error? 而且我没有包括CREATE PROCEDURE ,这是因为我看到一个帖子,其中更容易去ROUTINES面板并粘贴SQL Query而没有CREATE,DELIMITER ...等。如何解决此错误?

Control flow statements ( WHILE , IF , etc) in MySQL can be used only in a context of a stored routine (procedure, function, trigger, event). MySQL中的控制流语句( WHILEIF等) 只能在存储的例程(过程,函数,触发器,事件)的上下文中使用。 You can't use them on their own in a SQL batch. 您不能在SQL批处理中单独使用它们。

Flow Control Statements 流程控制声明
MySQL supports the IF, CASE, ITERATE, LEAVE LOOP, WHILE, and REPEAT constructs for flow control within stored programs . MySQL支持IF,CASE,ITERATE,LEAVE LOOP,WHILE和REPEAT构造,以在存储的程序中进行流控制。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM