如何在TSQL中声明变量并在多个语句中使用

时间:2018-04-11 04:49:27

标签: sql-server tsql

如何在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语句时。

2 个答案:

答案 0 :(得分:2)

变量仅存在于正在运行的语句中的特定范围内。因此,当您在存储过程中具有这样的逻辑时,它将在相同的范围内运行,因为它是相同的批处理,因此变量将对两个语句“起作用”。当你想手动运行它时也是如此 - 你必须同时运行两个语句才能得到你想要的东西。这就是它的工作原理,如果你同时运行两个语句 - 变量“在两个或多个语句中都有用”。

要了解更多信息,请参阅以下来源:

答案 1 :(得分:0)

正如评论中指出的那样,由于存在分号,因此它不适用于第二个陈述;

如果要在两个语句中使用变量,请删除两个语句之间的分号并运行整个代码。