创建一个变量来声明连接会话的长度?



我经常在一个脚本中批量测试我的SQL脚本,并在脚本开头声明变量,以便在多个查询中使用。

是否有一种方法可以声明一个持续的变量,比如连接会话的长度,这样我就不必重新声明/硬编码了?

当单独测试查询时,我要么运行整个脚本直到变量声明,暂时在我正在测试的部分重新声明变量,或者暂时硬编码变量。

Declare @StartDate as Date = '20220701'
Declare @EndDate as Date = '20220707'

如果你正在使用SQL Server 2016+,你可以使用session_context

为键/值数据对提供会话(@@SPID)生命周期的工作存储。

/* set a value */
exec sp_set_session_context 'MyName', 'my value';

/* retrieve a value */
select Session_Context('MyName');

详细信息请参见文档

我使用的一种可能性是CONTEXT_INFO,它在会话或批处理期间保存数据,并在事务回滚中幸存。

declare @contextInfo varbinary(128) = cast('Things and Stuff' as varbinary(128));
set context_info @contextInfo;
select cast(context_info() as varchar(128));

结果:

--------------------------------------------------------------------------------------------------------------------------------
Things and Stuff                                                                                                                
(1 row affected)

相关内容

  • 没有找到相关文章

最新更新