如何在T-SQL中声明变量并在多个语句中使用它?
例如:
DECLARE @STRDT DATE
SET @STRDT '2017-01-01'
SELECT TOP(10) *
FROM TABLE1
WHERE START_DATE = @STRDT;
SELECT TOP(10) *
FROM TABLE2
WHERE START_DATE = @STRDT;
现在,我能够正确运行第一个语句,但无法在第二个语句中使用声明的变量。我收到了一个错误
必须声明@STRDT
当我在SQL Server中运行第二个select语句时。
答案 0 :(得分:2)
变量仅存在于正在运行的语句中的特定范围内。因此,当您在存储过程中具有这样的逻辑时,它将在相同的范围内运行,因为它是相同的批处理,因此变量将对两个语句“起作用”。当你想手动运行它时也是如此 - 你必须同时运行两个语句才能得到你想要的东西。这就是它的工作原理,如果你同时运行两个语句 - 变量“在两个或多个语句中都有用”。
要了解更多信息,请参阅以下来源:
答案 1 :(得分:0)
正如评论中指出的那样,由于存在分号,因此它不适用于第二个陈述;
如果要在两个语句中使用变量,请删除两个语句之间的分号并运行整个代码。