您可以声明一个变量,将其设置为脚本定义,然后在整个脚本中重复执行它吗?我理解如何将变量设置为脚本的结果,但我想重新使用定义本身。这是因为我偶尔会从脚本获取计数,有时候在我的其余脚本中得到最高结果,我想制作它以便脚本很容易定制,只需要在开始时更改脚本一次。
示例:
declare @RepeatScript nvarchar(200)
declare @count int
declare @topresult int
set @RepeatScript = ' from Table1 where something = 1 and something else > getdate()-5'
set @count = select count(ID) & @RepeatScript
set @topresult = select top 1 (ID) & @RepeatScript
这个非常简单的案例很容易修复,但如果我想多次引用同一组信息而不必一遍又一遍地创建和删除temp_table,这将非常有用。我一直在MS Access中做这种事情,但我似乎无法弄清楚如何在SSMS中做到这一点。
答案 0 :(得分:0)
declare @RepeatScript nvarchar(200)
declare @count varchar(200)
declare @topresult varchar(200)
set @RepeatScript = ' from Table1 where something = 1 and something else > getdate()-5'
set @count = 'select count(ID) '+@RepeatScript+''
set @topresult = 'select top 1 (ID)'+@RepeatScript+''
print (@count)
print (@topresult)
那样的东西?但是不使用print,而是使用exec来运行select语句。这有帮助吗?
答案 1 :(得分:0)
您无需重复运行这些查询。您甚至不需要运行多个查询来捕获此信息。这将在单个查询中捕获两个数据。然后,您可以在当前批次中的任何其他位置引用该信息。这符合您在开始时更改脚本的标准。
declare @count int
, @topresult int
select @count = count(ID)
, @topresult = MAX(ID) --MAX would the same thing as top 1 order by ID desc
from Table1
where something = 1