[英]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中的控制流語句( WHILE
, IF
等) 只能在存儲的例程(過程,函數,觸發器,事件)的上下文中使用。 您不能在SQL批處理中單獨使用它們。
流程控制聲明
MySQL支持IF,CASE,ITERATE,LEAVE LOOP,WHILE和REPEAT構造,以在存儲的程序中進行流控制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.