在SQL服务器中,有时候我有一个可能会发生变化的变量,许多存储过程都会使用,只是认为如果我可以将它存储为'@@ variable'(如@@ servername)那就太酷了
是否可以创建自己的'@@变量'?如果是这样,你怎么做?
(使用sql server 2008)
答案 0 :(得分:6)
我会使用真实的表来保存您的全局值,然后它将在重启/连接之间存活。这里有一个很好的例子:http://weblogs.sqlteam.com/mladenp/archive/2007/04/23/60185.aspx
答案 1 :(得分:1)
在这些情况下,我通常会有一个表来保存这些值,我会在那里保留设置。您可以使用标量函数将其与存储过程一起封装以进行设置。我不知道有什么方法可以实际创建你自己的@@变量,但我还没有调查它。
答案 2 :(得分:1)
您不能声明可在存储过程之间共享的全局变量。
然而,您可以使用全局临时表来共享数据,只需使用下面的语法声明表并插入/读取值。
CREATE TABLE ##myTempTable
(
DummyField1 INT,
DummyField2 VARCHAR(20)
)
要在连接中共享数据,您可以使用context_info:
declare @vb varbinary(128)
set @vb = context_info() -- read value
set context_info @vb -- set value