簡體   English   中英

存儲過程內部的MySQL循環錯誤代碼#1064 [已修訂]

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

我編輯了這個問題,原因是下面提到的答案提到,在使用while並開始使用時,它應該位於存儲過程中。

所以現在我在存儲過程中運行它,但是仍然出現錯誤。

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

這是我得到的錯誤

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

而且我沒有包括CREATE PROCEDURE ,這是因為我看到一個帖子,其中更容易去ROUTINES面板並粘貼SQL Query而沒有CREATE,DELIMITER ...等。如何解決此錯誤?

MySQL中的控制流語句( WHILEIF等) 只能在存儲的例程(過程,函數,觸發器,事件)的上下文中使用。 您不能在SQL批處理中單獨使用它們。

流程控制聲明
MySQL支持IF,CASE,ITERATE,LEAVE LOOP,WHILE和REPEAT構造,以在存儲的程序中進行流控制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM