2009-02-19 19 views
1

je une procédure stockée qui retourne plusieurs jeux de résultats similaire à ce qui suit:Comment utiliser plusieurs jeux de résultats dans Reporting Services

ALTER PROCEDURE sp_XXXX 
(
    XXXXXX 
) 
AS 
SET NOCOUNT ON 

SELECT XXXXXXX  


IF @@ROWCOUNT = 0 
    SELECT  XXXXXXX 



RETURN 

Je veux que mon rapport d'utiliser le premier jeu de résultats si elle dispose de données ou de l'utilisation le second au cas où le premier est vide. De l'aide?

Répondre

1

Dans le sproc "union tous" vos deux ensembles de résultats. Si vous devez les différencier, ajoutez une colonne dérivée indiquant le jeu de résultats d'origine.

select 'ds1' as dataset, * 
from table1 
union all 
select 'ds2' as dataset, * 
from table2 

Une nouvelle tentative

résultat Dump set 1 dans une table temporaire et seulement exécuter la deuxième requête si elle est vide.

code pseudo:

select * into #tempResult 
from table 1 

if table1 is empty 

select * from table2 
+0

Merci pour votre réponse. Le problème avec l'utilisation de l'union tout est que je veux que l'instruction select soit exécutée seulement si la première ne retourne aucune ligne. – Ganesha

+0

vous pouvez vider le jeu de résultats 1 dans une table temporaire et exécuter uniquement la deuxième requête si elle est vide. –

+0

Merci. Oui, j'ai finalement fini par créer une variable Table temporaire dans SP. Curieux de savoir pourquoi les services de reporting OOB ne prennent pas en charge plusieurs jeux de résultats. Une autre approche pourrait être que je peux écrire un WebService et utiliser la source de données XML et écrire la logique dans WebService – Ganesha