2017-09-16 4 views
1

MySQL v5.7でWHILEループを使用しようとしましたが、構文エラーが継続しています。私は問題を特定できませんでした。構文はthe documentationに従って正しく表示されます。MySQL 5.7単純なWHILE文でエラーが見つかりません

スレッドがDELIMITERにステートメントをラッピングすることを提案していますが、これも機能しませんでした。

SET @counter = 1; 

WHILE (@counter < 2) DO 
    SELECT @counter; 
    @counter = @counter + 1; 
END WHILE 

と、エラーメッセージは次のとおりです:コードがある

ERROR 1064 (42000) at line 22: 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 'WHILE (@counter < 2) DO SELECT @counter' at line 1

私は何をしないのですか?

+0

どのようにDELIMITERショーusを使用しましたか? –

+0

はい、私は 'END WHILE'の後にセミコロンなしで試しました。デリミタを使用するときは、上記のブロックの前に 'DELIMITER //'を置き、セミコロンを付けて、 '/'をつけてください。 – Jonathan

答えて

4

私が覚えている限り、ちょうどそのようなループを使用することはできません。次のようにストアドプロシージャ内に配置する必要があります。

CREATE PROCEDURE mysp() 
BEGIN 
    DECLARE counter int DEFAULT 1; 
    WHILE counter < 2 DO 
     SET counter = counter + 1; 
    END WHILE; 
END 
+0

'DELIMITER'を忘れないでください – tadman

+0

これはこれまでに一番近いものです。 ERROR 1044(42000)at line 18:ユーザー 'run_OT1FwXgLf31'のアクセスが拒否されました '' localhost 'to database' run_ot1fwxglf31 'このプロシージャを作成できないようです環境:-( – Jonathan

0

次のコードを試してみてください。それは私のMySQL 5.7で正常に実行されました

DELIMITER // 

CREATE PROCEDURE mysp() 
BEGIN 
    DECLARE counter INT; 
    SET counter = 1; 

    label1: WHILE counter < 2 DO 
    SELECT counter; 
    SET counter = counter + 1; 
    END WHILE label1; 
END; // 

DELIMITER ; 
関連する問題