我正在尝试批处理一些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