Exec procédure stockée dans la dynamique de la table temporaire
À ma connaissance; ce que je veux faire n'est pas possible en sql, mais il vaut la peine de demander de vous les gars.
Permet de dire que j'ai une procédure stockée abc qui renvoie les colonnes Id et la Valeur. Cette procédure stockée est principalement utilisé par d'autres ministères pour des raisons fonctionnelles et je n'utilise que chaque maintenant et encore pour les vérifications de données.
Afin de l'utiliser dans le cadre de ma procédure stockée:
DECLARE @tABC TABLE
(
ID INT,
Value DECIMAL(12,2)
)
INSERT INTO @tABC
EXEC OtherDb.DataProd.abc
Oky donc, cela fonctionne parfaitement pour le moment, mais que s'ils modifient la structure de leur procédure stockée?
De l'ajout ou de la suppression d'une colonne à partir de leur procédure stockée de briser mon code, donc est-il un moyen de rendre mon code plus souple.
Ma dernière tentative désespérée va quelque chose comme ceci:
WITH tempTable AS
(
EXEC OtherDb.DataProd.abc
)
SELECT ID, Value FROM tempTable
Qui, évidemment, a échoué lamentablement.
Votre commentaire au sujet de l'Udf effectivement résolu mon problème. Je ne peux pas croire que je n'ai pas vu ça avant.
double possible de Insérer les résultats d'une Procédure Stockée dans une Table Temporaire
N'importe comment la dynamique de votre code si ils enlèvent les colonnes que vous utilisez votre code est cassé. N'ajoutez pas de surcharge inutile pour votre processus en raison de la mauvaise changement de contrôle. J'ai fait beaucoup de code dynamique, mais jamais pour la raison de la mauvaise changement de contrôle
OriginalL'auteur JAT | 2013-11-29
Vous devez vous connecter pour publier un commentaire.
Dans une certaine mesure, oui. Mais il n'y a pas d'autre moyen de satisfaire vos besoins, autant que je sache
OriginalL'auteur Raj
Insérer dans une table temporaire. Je sais que cela fonctionne en 2008 et au-dessus, ce n'est pas sûr 2005. Votre temp colonnes du tableau doit correspondre à votre procédure Stockée colonnes.
Je suis d'accord avec le commentaire par: Adriaan Davel Juil 20 '16 à 9:15 Voir son commentaire ci-dessus.
OriginalL'auteur Tim Melton
Sinon, jetez un oeil ici, il y a plus d'options expliqué là: Insérer les résultats d'une procédure stockée dans une table temporaire?
OriginalL'auteur NickyvV
c'est mieux et facile à utiliser openrowset
SELECT * INTO #tempTable DE la fonction OPENROWSET('SQLNCLI', 'Server=localhost;Trusted_Connection=oui;',
'EXEC OtherDb.DataProd.abc')
OriginalL'auteur Ali Yesilli