繁体   English   中英

执行动态查询而不显示结果

[英]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

db<>小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM