【发布时间】:2015-02-26 21:38:54
【问题描述】:
假设我有一个查询存储在这样的变量中(它实际上是动态填充的并且更复杂,但这是出于演示目的):
DECLARE @Query VARCHAR(1000) = 'SELECT * FROM dbo.MyTable'
有没有办法检查查询是否会返回任何结果?像这样的东西,但这不起作用:
IF EXISTS (@Query)
BEGIN
-- do something
END
我能想到的唯一方法是将结果放在临时表中,然后从中查询,但这并不理想,因为动态查询中的列可能会有所不同,我真的不需要除了检查是否会返回某些行之外,完全出于任何原因访问临时表。有没有更好的办法?
【问题讨论】:
-
然后尝试使用 EXISTS 子查询......在存在的地方做一些事情(从 dbo.MyTable 中选择 1)。最终,当该表中存在记录时,您将检查该表以执行其他操作。
-
子查询是动态的,存储在如上所示的变量中。
EXISTS在动态时不起作用。
标签: sql sql-server exists