首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GO中的全局变量

GO中的全局变量
EN

Stack Overflow用户
提问于 2011-03-24 03:39:32
回答 5查看 28K关注 0票数 25

我正在尝试批处理一些SQL脚本。在顶部,我声明了一些我认为是全局的变量

所以:

代码语言:javascript
复制
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,随后的批处理脚本找不到这些声明。对于正在使用或设置这些变量的所有批处理脚本,有没有一种方法使它们保持全局?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-24 03:49:51

临时表在go中仍然存在:

代码语言:javascript
复制
create table #vars (someVar1 varchar(10), someVar2 int)
insert #vars values ('abc',123)

获取值:

代码语言:javascript
复制
select someVar1 from #vars

设置值

代码语言:javascript
复制
update #vars set someVar1 = 'def'

临时表是特定于您的连接的,因此它们不会比必须的更具全局性。

票数 22
EN

Stack Overflow用户

发布于 2014-04-08 00:35:16

您可以声明脚本变量,这些变量可以使用setvar命令显式定义,并且不会超出go语句的范围。

例如:

代码语言:javascript
复制
--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

票数 12
EN

Stack Overflow用户

发布于 2011-03-24 03:44:06

没有全局变量这样的东西,但是您可以这样做:Link

使用示例:

代码语言:javascript
复制
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之间保持不变。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5410690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档