1

なぜ私が得られるのか誰にもわかりますか:

[Err] 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 '//

DELIMITER' at line 11

次のスニペットの場合:

DELIMITER //

DROP PROCEDURE 
IF EXISTS nested_test//
CREATE PROCEDURE nested_test()
BEGIN
    DECLARE a INT;
    SET a = 1;
    SELECT a;
    BEGIN
        DECLARE b INT;
        SET b = 2;
        SELECT b;
    END;
END//

DELIMITER;

これは私が実際に書いているものの簡略化されたバージョンであり、まったく同じエラーが発生します。ネストされた BEGIN END ブロックを追加するまで、すべてが素晴らしいです。phpMyAdmin では問題なく動作しますが、Navicat 9 では失敗します

4

1 に答える 1

0

の後にスペースが必要DELIMITERです。

DELIMITER ;

そのように。


DELIMITER //

DROP PROCEDURE 
IF EXISTS nested_test//
CREATE PROCEDURE nested_test()
BEGIN
    DECLARE a INT;
    SET a = 1;
    SELECT a;
    BEGIN
        DECLARE b INT;
        SET b = 2;
        SELECT b;
     END;
END //

DELIMITER ;

実行すると、以下が生成されます。

0 行が影響を受け、0 行が見つかりました。2 つのクエリの所要時間: 0.000 秒。

于 2013-03-23T04:29:46.847 に答える