Pri*_*esh 3 t-sql memory sql-server heap stack
在T-SQL中,当我们做类似的事情
declare @PolicyId int = 20
Run Code Online (Sandbox Code Playgroud)
分配了4个字节,因为a的大小int
是4个字节,但是这个内存分配在哪里 - 它是在堆栈还是堆上?
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;
Run Code Online (Sandbox Code Playgroud)
注意如何在@x
循环内部声明可以在循环外引用.IE浏览器.循环并没有创建一个范围.但是初始赋值确实在循环的每次迭代中执行(打印的值总是1
,不是1,2,3...
).