gpt4 book ai didi

mysql - 我们可以动态声明变量吗

转载 作者:行者123 更新时间:2023-11-29 00:13:55 25 4
gpt4 key购买 nike

问题一:在存储过程中,我们可以像下面这样动态声明变量吗:

declare @i int =1;
declare @s nvarchar(max) ='';
while(@i<5)
begin
set @s = concat('declare @temp',@i,' nvarchar(max);');
exec (@s);
set @i=@i + 1;
end

如果我们可以像上面那样动态声明变量,那么这种变量的范围是什么?在那个存储过程中?

问题二:我们不需要在 mysql 中声明 session 变量,所以我们可以在 sql server 中拥有相同类型的 session 变量。

实际上我正在将 mysql 脚本转换为 sql server 脚本,我发现变量声明有困难,因为在 mysql 中我使用了 session 变量。

提前致谢..

最佳答案

是,不是

您可以动态声明变量,然后exec 命令,但它的作用域将在exec 语句内,因此它会在之后消失。

你可以做到

declare @t nvarchar(100) = 'declare @v int; select @v = 1; select @v+1'
exec (@t)

或者您可以使用 sp_executesql 将变量传递给命令。

关于mysql - 我们可以动态声明变量吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23651992/

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