如何在SQL Server中声明全局变量?

时间:2016-09-13 11:47:38

标签: sql-server sql-server-2012 sql-server-2008-r2

我有很多stored procedures使用的编码值,所以创建一个全局变量(在数据库级别)并在所有stored procedure中使用它, 如果再次发生变化,则只需要更改该变量的值将影响存储过程的所有逻辑。 通过全局变量我的意思是:@@ Error,@@ ROWCOUNT等等。

如果有任何其他方法,请建议。

1 个答案:

答案 0 :(得分:3)

您可以创建并在那里存储值。然后任何需要该值的SP都可以查询该表。我通常建议修复一行和多列(这样每个列,代表一个“全局变量”可以有一个合适的数据类型)。

E.g。

CREATE TABLE Globals (
   X char(1) not null,
   GlobalVar1 varchar(250) not null,
   GlobalVar2 int not null,
   constraint PK_Globals PRIMARY KEY (X),
   constraint CK_Globals_Single CHECK (X='X')
)

然后插入行:

INSERT INTO Globals (X,GlobalVar1,GlobalVar2)
VALUES ('X','someone@example.com',32)

然后再更新它。然后,您可以将特定列值读取到存储过程中的局部变量中,或者只是加入此表,具体取决于最合适的位置。