【发布时间】:2017-10-26 18:42:12
【问题描述】:
您能否声明一个变量,将其设置为脚本定义,然后在整个脚本中重复执行它?我了解如何将变量设置为脚本的结果,但我想重新使用定义本身。这是因为我想偶尔从脚本中获取计数,有时在我的脚本的其余部分中获取最高结果,并且我希望通过只需要在开始时更改一次脚本来轻松自定义脚本。
一个例子:
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 中做到这一点。
【问题讨论】:
-
简单地说不,你不能这样做。但是,如果您想多次访问同一查询的结果,您应该将结果存储在一个变量中,而不是一遍又一遍地执行相同的查询。要完成像您演示的那样需要动态 sql。
标签: sql-server declare