gpt4 book ai didi

mysql - 有没有办法关闭存储过程的结果集?

转载 作者:行者123 更新时间:2023-11-29 05:28:16 24 4
gpt4 key购买 nike

请考虑以下运行良好的 MySQL 存储过程代码片段...

BEGIN
sponsor: loop
-- DO STUFF

select @sq := sq from a_nice_table where id = @a_nice_var;

-- DO MORE STUFF
end loop sponsor;
END

我填充变量“sq”的代码行是我问题的来源。此存储过程代码正在写入“DO STUFF”并且不返回结果。我需要填充变量,但不希望在结果集中返回 @sq。

我使用 Navicat 进行编码,我得到了每个循环迭代返回的结果集。

有没有办法关闭存储过程的结果集?是否还有一种方法可以在中途将它们转回原处?这对于调试目的很有用。谢谢。

最佳答案

这种填充方式不输出结果。

select sq into @sq from a_nice_table where id = @a_nice_var limit 1;

它也适用于多个变量

select sq, whatever, one_more into @sq, @v_whatever, @v_one_more from a_nice_table where id = @a_nice_var limit 1;

The INTO clause can name a list of one or more variables, which can be user-defined variables, stored procedure or function parameters, or stored program local variables.

阅读更多相关信息 here .

P.S.:请注意,我在查询中添加了 LIMIT 1。否则将抛出一个错误,即查询返回多行。区别于

select @sq := sq from a_nice_table where id = @a_nice_var;

是,@sq := sq 对每一行(如果有多个)完成,但最终变量将保存最后一行的值,而不是所有行的值.所以实际上没有区别,结果集...

关于mysql - 有没有办法关闭存储过程的结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17520564/

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