簡體   English   中英

MySQL不接受循環結束指令

[英]MySQL doesn't accept loop end instruction

我正在嘗試在插入事件后創建觸發器; 這是觸發器的定義:

 BEGIN
    DECLARE stud INT(11) DEFAULT 0;
    DECLARE cd INT(11) DEFAULT 0;
    DECLARE sw CURSOR FOR 
        (SELECT CodiceStudente FROM Listastudenticorsi WHERE CodiceCorso IN
            (SELECT CodiceCorso FROM Listanews WHERE CodiceNews IN
                (SELECT MAX(Codice) FROM News)));
    DECLARE cod CURSOR FOR
        (SELECT CodiceDocente FROM Listanews WHERE CodiceNews IN
               (SELECT MAX(Codice) FROM News));
    OPEN sw;
    OPEN cod;
    get_loop: LOOP
    FETCH sw INTO stud;
    FETCH cod INTO cd;
    INSERT INTO Inbox(Mittente, Destinatario, Oggetto, Contenuto, Data) VALUES (cd, stud, "Nuova news", "", CURDATE());
    END LOOP get_loop;
END

由於某些原因,MySQL不允許我創建它:它說我必須在第17行檢查“ LOOP; END”附近的語法,但據我所知那里的語法是正確的...我不知道無法理解問題所在,即使我將循環名稱放在end循環之后,也會顯示錯誤。

我不確定錯誤是否可能在INSERT指令中:我不確定變量@cod的使用。 它始終是唯一的值,但是我不確定是否是引起問題的原因。 如果是這樣,我應該如何更改該指令以獲得相同的結果?

您缺少END IF; 第17行的聲明

BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE stud VARCHAR(255) DEFAULT "";
    DECLARE sw CURSOR FOR 
        (SELECT CodiceStudente FROM Listastudenticorsi WHERE CodiceCorso IN
            (SELECT CodiceCorso FROM Listanews WHERE CodiceNews IN
                (SELECT MAX(Codice) FROM News)));

    SET @cod = (SELECT CodiceDocente FROM Listanews WHERE CodiceNews IN
               (SELECT MAX(Codice) FROM News));
    OPEN sw;
    get_loop: LOOP
    FETCH sw INTO stud;
        IF done THEN
        LEAVE get_loop;
        END IF;
    INSERT INTO Inbox(Mittente, Destinatario, Oggetto, Contenuto, Data) VALUES (@cod, @i, stud, "", CURDATE());
    END LOOP get_loop;
END;

我不確定為什么會收到該錯誤,但是根本不需要loop 只是做這樣的事情:

INSERT INTO Inbox(Mittente, Destinatario, Oggetto, Contenuto, Data)
    SELECT @cod, CodiceStudente, 'Nuova news', '', CURDATE()
    FROM Listastudenticorsi
    WHERE CodiceCorso IN (SELECT CodiceCorso 
                          FROM Listanews
                          WHERE CodiceNews IN (SELECT MAX(Codice) FROM News));

暫無
暫無

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

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