GO的全局变量

Pos*_*Guy 22 t-sql

我正在尝试批处理一些SQL脚本.在顶部,我已经宣布了一些我认为在术语意义上的全局变量

所以:

DECLARE @someVar1
DECLARE @someVar2
...etc.

GO

Some batch of SQL here that sets @someVar1 and @SomeVar2 to a value and uses it in the SQL statement

GO


Some batch of SQL here that sets @someVar1 and @SomeVar2 to a value and uses it in the SQL statement

GO
...
Run Code Online (Sandbox Code Playgroud)

声明超出范围...意味着当我运行它时,后续批处理脚本找不到那些声明.有没有办法让所有使用或设置这些变量的批处理脚本都使用全局?

And*_*mar 21

临时表确实存活下来go:

create table #vars (someVar1 varchar(10), someVar2 int)
insert #vars values ('abc',123)
Run Code Online (Sandbox Code Playgroud)

获得价值:

select someVar1 from #vars
Run Code Online (Sandbox Code Playgroud)

设定值

update #vars set someVar1 = 'def'
Run Code Online (Sandbox Code Playgroud)

临时表特定于您的连接,因此它们不是全局的.


Osc*_*das 10

您可以声明脚本变量,可以使用setvar命令显式定义,并且不要超出GO语句的范围.

例如

--Declare the variable
:setvar MYDATABASE master
--Use the variable
USE $(MYDATABASE);
SELECT * FROM [dbo].[refresh_indexes]
GO
--Use again after a GO
SELECT * from $(MYDATABASE).[dbo].[refresh_indexes];
GO
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请访问:http://technet.microsoft.com/en-us/library/ms188714.aspx