簡體   English   中英

MySQL中的IF語句導致錯誤代碼1064

[英]IF statement in MySQL results in Error Code 1064

我試圖將if語句嵌套在最終將成為例程的內容中。

SET @foo = (SELECT foo FROM table WHERE id = 1);
SET @bar = (SELECT bar FROM table WHERE id = 1);

IF @foo = @bar THEN SET @thisVar = 1;
ELSE SET @thisVar = 0;
END IF

SELECT @thisVar;

但是我得到:

錯誤代碼:1064您的SQL語法錯誤; 檢查與您的MySQL服務器版本相對應的手冊以獲取正確的語法,以在第1行“ IF @foo = @bar THEN SET @thisVar = 1;”附近使用)

我究竟做錯了什么?

不確定是否在那里,但是為什么錯誤顯示第1行? 也許問題在於您實際上沒有運行整個過程。

您可以嘗試使用IF()函數,如下所示:

SET @thisVar = IF(@foo = @bar, 1, 0);

對於簡單的if / else分配,我認為這更短,更干凈。

聲明所有內容后,將其包裝到過程中似乎很好。 還刪除了@。

CREATE PROCEDURE `DO_SOMETHING`()
BEGIN
    DECLARE _foo VARCHAR(20);
    DECLARE _bar VARCHAR(20);
    DECLARE _thisVar INT;

    SET _foo = 'test';
    SET _bar = 'test';

    IF _foo = _bar THEN SET _thisVar = 1;
    ELSE SET _thisVar = 0;
    END IF;

    SELECT _thisVar;
END

暫無
暫無

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

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