在变量中使用脚本

时间:2017-10-26 18:42:12

标签: sql-server declare

您可以声明一个变量,将其设置为脚本定义,然后在整个脚本中重复执行它吗?我理解如何将变量设置为脚本的结果,但我想重新使用定义本身。这是因为我偶尔会从脚本获取计数,有时候在我的其余脚本中得到最高结果,我想制作它以便脚本很容易定制,只需要在开始时更改脚本一次。

示例:

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中做到这一点。

2 个答案:

答案 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