gpt4 book ai didi

mysql - 相同的查询,不同的结果

转载 作者:行者123 更新时间:2023-11-29 21:53:48 25 4
gpt4 key购买 nike

我正在尝试运行一个我首先输入的查询,如下所示:

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 ;

在一行上。问题是第一个(多行)代码可以工作,并且执行它应该执行的操作,而另一个(单行)版本则不能。它不会失败或抛出错误,它只是不会像多行版本那样插入行。为什么是这样?更重要的是,如何使单行版本工作?

提前致谢!

最佳答案

请尝试这样:

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 ;

最后一个换行符可能不是必需的。

但我相当有信心,当内联整个代码时,您最终会设置比“$$”长得多的分隔符

我刚刚在我的随机 SQL 服务器上执行了完全内联的示例,并且总是收到积极的结果,即使我还没有设置相关的数据库结构。

由于换行,有人提示缺少表格(正如预期的那样)

问候斯特凡

关于mysql - 相同的查询,不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33380860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com