在T-SQL中,当我们执行类似
的操作时declare @PolicyId int = 20
分配了4个字节,因为int
的大小是4个字节,但其中是分配的内存 - 它是在堆栈还是堆上?
答案 0 :(得分:6)
T-SQL变量不在堆栈上,也不在堆上。它们在当前执行上下文中被命名为逻辑实体。在循环中放置声明与将其放在循环外部相同。通过在循环中放置变量,不会导致内存耗尽或堆栈溢出。请参阅以下代码:
declare @i int =0
while @i<2
begin
declare @x int = 0;
set @x += 1
print @x;
set @i += 1;
end
print @x;
注意@x
如何在循环外引用,即使在循环内声明。 IE浏览器。循环不创建范围。但是初始赋值会在循环的每次迭代中执行(打印的值始终是1
,而不是1,2,3...
)。