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

Ale*_*lec 2 sql t-sql sql-server

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

有没有办法声明一个持续时间(例如连接会话长度)的变量,这样我就不必重新声明/硬编码?

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

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

Run Code Online (Sandbox Code Playgroud)

Stu*_*Stu 7

如果您使用的是 SQL Server 2016+,则可以使用session_context

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

/* set a value */
exec sp_set_session_context 'MyName', 'my value';
    
/* retrieve a value */
select Session_Context('MyName');
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档。

  • 甚至比我的旧学校版本更好。谢谢! (2认同)