[英]Execute dynamic query without showing the result
我有一个存储过程,它返回多个检查的结果。 在存储过程中,我有动态查询。 第一个用于计算特定表的最后更新日期。 此查询的结果应保存在一个变量中,我将进一步将其用作单个值,因此我不必在每次需要时都计算它。
查询如下所示:
SET @lastUpdate = ' (SELECT MAX(CAST(' + @column + ' as date)) FROM ' + @schema + '.' + @table + ')'
EXEC sp_executesql @lastUpdate
问题是,当我运行存储过程时,它会返回此查询的结果(例如 2021-01-31),然后返回我所做的检查的结果。
所以我想做的是计算@lastUpdate
但不显示结果,只是为了使用它。 我尝试使用 output 变量,但得到了相同的结果。
在字里行间阅读,我认为这可能是您所追求的,使用OUTPUT
参数:
--Your Dynamic Objects
DECLARE @Column sysname,
@Schema sysname,
@Table sysname;
DECLARE @LastUpdate date, --This isn't yor dynamic statement now, it's a date, like the name implies
@SQL nvarchar(MAX); --This is your dynamic statement
SET @SQL = N'SELECT @LastUpdate = MAX(CAST(' + QUOTENAME(@Column) + N' as date)) FROM ' + QUOTENAME(@Schema) + N'.' + QUOTENAME(@Table) + N';'
EXEC sys.sp_executesql @SQL, N'@LastUpdate date OUTPUT', @LastUpdate OUTPUT;
PRINT @LastUpdate; --Printing to demonstrate value has been assigned
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.