我想運行一個查詢這是我第一次打出來是這樣的:同一查詢,不同的結局
DELIMITER $$
DROP PROCEDURE IF EXISTS development $$
CREATE PROCEDURE development()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 500 DO
IF NOT EXISTS ((SELECT * FROM customers WHERE customerID = 500)) THEN INSERT INTO customers (firstName) VALUES (''); END IF;
SET i = i + 1;
END WHILE;
END $$
CALL development() $$
DROP PROCEDURE IF EXISTS development $$
DELIMITER ;
但隨後被「壓縮」成這樣:
DELIMITER $$ DROP PROCEDURE IF EXISTS development $$ CREATE PROCEDURE development() BEGIN DECLARE i INT DEFAULT 1; WHILE i <= 500 DO IF NOT EXISTS ((SELECT * FROM customers WHERE customerID = 500)) THEN INSERT INTO customers (firstName) VALUES (''); END IF; SET i = i + 1; END WHILE; END $$ CALL development() $$ DROP PROCEDURE IF EXISTS development $$ DELIMITER ;
在一行。問題在於第一行(多行)代碼工作,並執行它應該做的事情,而另一行(單行)版本則不行。它不會失敗或拋出錯誤,它不會像多行版本那樣插入行。爲什麼是這樣?更重要的是,我怎樣才能使單行版本工作?
提前致謝!
說明以何種方式失敗? –
@MichaelBerkowski它不會失敗,它只是不會做它應該做的事情;即添加500個客戶虛擬行。 – Tice
我懷疑問題是在分隔符處,在行尾。但是,你不解釋問題是什麼,所以這只是一個猜測。 –