gpt4 book ai didi

stored-procedures - 如何在 MySQL 存储过程中模拟打印

转载 作者:IT王子 更新时间:2023-10-28 23:48:15 25 4
gpt4 key购买 nike

我有一个带有几个游标的 MySQL 存储过程。我想打印一个值以将输出发送回客户端。 SQLyog Enterprise .

我尝试将一个变量声明为 TEXT 并在循环内连接,但这不起作用,至少不是我尝试这样做的方式。

DECLARE _output TEXT;
DECLARE _ID INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT ID FROM CodeID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN cur1;

REPEAT
FETCH cur1 INTO _ID;
IF NOT done THEN
SET _output = _ID; /*SEE ALT BELOW*/

END IF;
UNTIL done END REPEAT;
CLOSE cur1;

SELECT _output;

我试过:

SET _output = _output + _ID

SET _output = CONCAT(_output,_ID)

但他们都只返回 NULL

SET _output = _ID; 只是给我最后获取的行。这很有帮助,但不完全是我想要的。

将每个获取的行输出到屏幕以在 MySQL 存储过程中重现 MySQL 打印的最佳方法是什么?

最佳答案

您的 SELECT _output 做得正确;任何不带 INTO 子句的选择都将返回给客户端。

要获得所有这些,您可以将 SELECT 移到循环中(单独打印每个),或者将它们连接在一起。你的 concat 返回 NULL 的问题是因为你没有将 _output 初始化为任何东西,所以它是 NULL。用 NULL 连接任何东西都会返回 NULL。

尝试以下方法:

DECLARE _output TEXT DEFAULT '';DECLARE _ID INT DEFAULT 0;DECLARE cur1 CURSOR FOR SELECT ID FROM CodeID;DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;OPEN cur1;REPEAT  FETCH cur1 INTO _ID;  IF NOT done THEN    SET _output = CONCAT(",", _ID); /*SEE ALT BELOW*/  END IF;UNTIL done END REPEAT;CLOSE cur1;SELECT _output;

关于stored-procedures - 如何在 MySQL 存储过程中模拟打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/627248/

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