J'ai une procédure TSQL qui effectue trois boucles afin de trouver des données pertinentes. Si la première boucle ne renvoie aucun résultat, alors la deuxième le fait généralement. Je rajoute une autre table qui contient plusieurs valeurs que je peux utiliser plus tard.
Par conséquent, je devrais avoir au maximum deux tables renvoyées dans l'ensemble de données de la procédure stockée.
Le problème est que si la première boucle est vide, je me retrouve ensuite avec trois tables de données dans mon ensemble de données.
Dans mon code C#, je peux supprimer cette table vide, mais je préférerais ne pas la renvoyer du tout à partir de la procédure stockée.
Y a-t-il un moyen de supprimer la table vide de l'intérieur de la procédure stockée, étant donné ce qui suit :
EXEC (@sqlTop + @sqlBody + @sqlBottom)
SET @NumberOfResultsReturned = @@ROWCOUNT;
.
.
.
IF @NumberOfResultsReturned = 0
BEGIN
SET @searchLoopCount = @searchLoopCount + 1
END
ELSE
BEGIN
-- nous avons des données, donc pas besoin de relancer
BREAK
END
Le processus se déroule comme suit : à la première boucle, il pourrait ne pas y avoir de résultats. Ainsi, le nombre de lignes sera zéro car EXEC exécute une requête SQL dynamiquement créée. C'est une table.
Lors de la prochaine itération, des résultats sont renvoyés, ce qui fait deux tables de données dans la sortie de l'ensemble de données, plus ma troisième ajoutée à la fin.
Je ne voulais pas faire un COUNT(*) puis si > 0 alors exécuter la requête car je veux minimiser les requêtes.
Merci.