【发布时间】:2011-07-08 13:34:51
【问题描述】:
我有一个 TSQL 存储过程,它执行三个循环以查找相关数据。如果第一个循环没有呈现结果,那么第二个通常会呈现。我附加了另一个具有多个值的表,我以后可以使用它们。
所以我最多只能从存储过程的数据集中返回两个表。
问题是,如果第一个循环是空白的,那么我的数据集中会有三个数据表。
在我的 C# 代码中,我可以删除这个空表,但不希望它从存储过程中返回。
有没有办法从存储过程中删除空表,给定以下条件:
EXEC (@sqlTop + @sqlBody + @sqlBottom)
SET @NumberOfResultsReturned = @@ROWCOUNT;
.
.
.
IF @NumberOfResultsReturned = 0
BEGIN
SET @searchLoopCount = @searchLoopCount + 1
END
ELSE
BEGIN
-- we have data, so no need to run again
BREAK
END
过程如下:在第一个循环中可能没有结果。因此,行数将为零,因为 EXEC 执行动态创建的 SQL 查询。那是一张桌子。
在下一次迭代中,返回结果,在数据集中输出两个数据表,最后添加我的第三个。
我不想做一个 COUNT(*) 然后如果 > 0 然后执行查询,因为我想最小化查询。
谢谢。
【问题讨论】:
-
您能否提供更多关于如何选择结果的信息?您是否尝试过使用临时表或表变量?我想如果您首先选择该表变量,然后仅从该表中选择(并返回结果)如果它不为空,那么您应该完全控制返回的结果集的数量。
标签: tsql stored-procedures c#-4.0