2009-02-06 20 views
0

J'ai certaines procédures stockées qui sont utilisées pour générer des rapports. J'essaye de construire un tableau de bord de rapport qui montrera combien d'enregistrements sont sur chaque rapport.T-SQL 2005: Supprimer la sortie du jeu de résultats

Les SP sont détaillés dans un tableau qui détaille l'ordre dans lequel ils doivent être exécutés.

J'ai un tableau de bord SP dans lequel j'utilise Cursor pour parcourir la table de base de données, exécuter chaque rapport SP et ensuite enregistrer le @@ rowcount dans une table temporaire qui constitue la base du tableau de bord.

Je peux désactiver le nombre de lignes en utilisant set rowcoun off en haut de chaque SP, mais je n'arrive pas à trouver un moyen d'arrêter l'ensemble de résultats à partir de la commande EXEC sp_my_sp.

 
WHILE @@FETCH_STATUS = 0 
BEGIN 
    declare @x as int 
    exec @SP_name @x OUT 
    select @x 
    insert into @results (Short___name,Records) values (@shortname,@x) 
    FETCH NEXT FROM myCursor INTO @ShortName, @SP_Name,@Group,@Order 
END 

Quelque part là-bas je besoin de supprimer ou rediriger la sortie. Je ne veux pas le faire dans le rapport SP.

La seule solution que j'ai trouvée jusqu'ici est d'ajouter un paramètre d'entrée à chaque SP pour dire s'il est exécuté pour le tableau de bord ou pour le rapport. Au lieu de retourner le jeu de résultats directement, insérez-le dans une table en mémoire et puis rapportez la table en mémoire SEULEMENT si nous courons pour les rapports - pas sympa comme quelqu'un doit se rappeler de le faire pour chaque nouveau SP

TIA

Obiron

Répondre

1

je peux penser à une solution possible, mais je ne sais pas s'il est particulièrement élégant (ou ce que vous cherchez).

En développant l'idée d'un paramètre d'entrée pour le SP, ne pourriez-vous pas simplement ajouter une logique (instruction CASE ou IF) pour appeler un Select Count() sur le script quand il vient du tableau de bord?

Il faudrait ajouter à chaque SP, mais tant qu'il est documenté, il ne devrait pas causer trop de problèmes pour les futurs développeurs.