TSQL:全局脚本变量?

时间:2010-04-22 19:33:38

标签: sql-server tsql

我在TSQL查询中使用变量。随着我的脚本的增长,我将每个部分分开GO,现在问题是我需要访问脚本顶部的变量。

我怎样才能访问这些变量?

希望这是一件简单明了的事。

全部谢谢

3 个答案:

答案 0 :(得分:8)

GO用于分隔批次的t-sql,变量具有局部范围,并且仅在定义它们的批处理或过程中可见。

您最好的方法可能是将全局内容存储在临时表中,或者如果它们是常量则创建存储过程。在运行时拉它们。

答案 1 :(得分:2)

迟到了,但是如果你正在使用SSMS,你可以将它放在SQLCMD Mode中并以这种方式定义变量。一旦定义了变量,就无法更改变量,但仍然很容易知道。

:setvar MyVariable "FooBar"

Select Foo from Bar where FooBar = '$(FooBar)'
GO
Insert Into Bar(FooBar) Values ('$(FooBar)')
GO

答案 2 :(得分:0)

有类似的问题。

我的解决方案:

IF OBJECT_ID('tempdb..#range') IS NOT NULL DROP TABLE #range
GO

SELECT  '06/01/15' STARTING_DATE, '06/30/15' ENDING_DATE
INTO    #range
GO

SELECT  f.*
FROM    foo f
INNER JOIN #range r ON f.date_field BETWEEN r.starting_date AND r.ending_date
GO

SELECT  b.*
FROM    bar b
INNER JOIN #range r ON b.date_field BETWEEN r.starting_date AND r.ending_date
GO

IF OBJECT_ID('tempdb..#range') IS NOT NULL DROP TABLE #range
GO