У меня есть sproc TSQL, который делает три цикла, чтобы найти соответствующие данные. Если первый цикл не дает результатов, то второй обычно делает. Я добавляю другую таблицу с несколькими значениями, которые я могу использовать позже.
Таким образом, самое большее, мне нужно иметь только две таблицы, возвращенные в наборе данных из sproc.
Проблема в том, что если первый цикл пуст, я получаю три таблицы данных в моем наборе данных.
В моем C # -коде я могу удалить эту пустую таблицу, но не хотел бы, чтобы она вообще возвращалась из sproc.
Есть ли способ удалить пустую таблицу из sproc, учитывая следующее:
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, тогда выполняйте запрос так, как я хочу минимизировать запросы.
Спасибо.