2011-04-11 8 views
1

J'ai quelques procédures stockées qui renvoient le même ensemble de données (mêmes colonnes) à un utilisateur. La procédure stockée appelée dépend de certaines conditions. Ces procédures stockées sont assez intensives et sont exécutées par chaque utilisateur du système. Je voudrais créer une procédure stockée qui appelle chacune de ces procédures et stocke les données sur une table distincte. Je vais ensuite exécuter cette nouvelle procédure stockée toutes les 5 minutes environ et laisser les utilisateurs tirer de la nouvelle table.SQL: Utilisation de la procédure stockée dans une procédure stockée

T_OutboundCallList est une table permanente avec les mêmes colonnes que celles retournées par les deux procédures stockées.

Je voudrais quelque chose comme ce qui suit, mais quand j'essaie de l'exécuter, il fonctionne en continu et je dois arrêter la procédure.

BEGIN 

TRUNCATE TABLE T_OutboundCallList 


INSERT T_OutboundCallList EXECUTE p_LeadVendor_GetCallsForCallList 

INSERT T_OutboundCallList EXECUTE p_CallLog_GetAbandonedCallsCallList 

END 

Chacune des procédures (* ListeAppels) retourne une liste d'appels à faire et je ne veux les entrées dans la nouvelle table dans cet ordre (LeadVendor appelle avant AbandonedCalls). J'ai également besoin d'effacer la table avant d'ajouter les appels car il peut y avoir de nouveaux appels qui doivent être plus élevés dans la liste.

Y at-il un problème avec cette procédure que je ne vois pas?

Merci, Brian

Répondre

2

Sans voir le code dans votre * ListeAppels procs il est difficile de dire ce problème que vous rencontrez. Vous devriez avoir les commandes d'insertion à l'intérieur de votre procédure imbriquée. Vous pouvez utiliser les résultats d'une procédure pour insérer des données, mais pas comme vous êtes ci-dessus. Il utilise OPENROWSET, et je pense que vous serez mieux comme je l'ai suggéré.

+0

Merci pour les conseils. J'ai réécrit mes procédures stockées pour faire l'insertion dans chacune des procédures stockées imbriquées qui fonctionne très bien. – BrianKE