我正在尝试批处理一些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
...当我运行此命令时,声明超出了scope...meaning,随后的批处理脚本找不到这些声明。对于正在使用或设置这些变量的所有批处理脚本,有没有一种方法使它们保持全局?
发布于 2011-03-24 03:49:51
临时表在go中仍然存在:
create table #vars (someVar1 varchar(10), someVar2 int)
insert #vars values ('abc',123)获取值:
select someVar1 from #vars设置值
update #vars set someVar1 = 'def'临时表是特定于您的连接的,因此它们不会比必须的更具全局性。
发布于 2014-04-08 00:35:16
您可以声明脚本变量,这些变量可以使用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有关更多信息,请访问:http://technet.microsoft.com/en-us/library/ms188714.aspx
发布于 2011-03-24 03:44:06
没有全局变量这样的东西,但是您可以这样做:Link
使用示例:
EXEC sp_SetGlobalVariableValue 'Test1', 'test1'
EXEC sp_SetGlobalVariableValue 'Test2', 'test2'
GO
EXEC sp_GetGlobalVariableValue 'Test1'
EXEC sp_GetGlobalVariableValue 'Test2'
GO
EXEC sp_GetGlobalVariableValue 'Test1'
EXEC sp_GetGlobalVariableValue 'Test2'
GO使用上面链接中提到的存储过程,我能够设置全局变量,并使它们在GO之间保持不变。
https://stackoverflow.com/questions/5410690
复制相似问题