这是一个非常初学的问题,但变量在SSMS中如何实际起作用?我有以下3个陈述:
DECLARE @p1 TABLE (col2 VARCHAR(30))
UPDATE t
SET col2 = 'Peter', col3 = GETDATE()
OUTPUT CAST(INSERTED.col3 AS VARCHAR(30)) i
INTO @p1
WHERE col1 = 1
SELECT * FROM @p1
在SSMS中,如果我突出显示所有3个语句并一起执行它们,则语句按预期工作。但如果我选择&一次运行一个,我收到一条错误消息
Msg 1087,Level 15,State 2,Line 71
必须声明表变量" @ p1"
特定执行期间T-SQL变量是否可用?还有另一种技术可以实际设置"一个变量在整个Session中持续存在?
答案 0 :(得分:1)
是的,变量仅适用于给定的执行(或批量,正如Sean的评论所解释的那样)。
没有任何设置或技术可以让变量在整个会话期间保持不变,但temp tables会这样做。
答案 1 :(得分:1)
Sean Lange上面的评论是正确的。在这种情况下,您似乎希望将数据插入表变量,然后能够使用表中的数据。您可以使用临时表来完成此操作,并且在您删除它或关闭查询窗口之前,该表将可用。
Create table #p1 (col2 varchar(30))
UPDATE t SET col2 = 'Peter', col3 = getdate()
OUTPUT CAST(INSERTED.col3 AS varchar(30))i
into #p1
WHERE col1 = 1
select * from #p1