2017-09-19 3 views
1

J'essaie d'obtenir le résultat d'une procédure stockée exécutée à extraire sous la forme d'un fichier XML de la table dont le résultat est affiché à l'origine. Ce que j'essaye de faire est quelque chose comme ceci.Récupération de xml à la suite d'une procédure stockée exec

exec dbo.StoredProcedure FOR XML RAW, ROOT ('root_name').

Disons que exec dbo.StoredProcedure renvoie la table dans la procédure stockée, Je veux que le FOR XML RAW, ROOT ('root_name') pour retourner la valeur XML de ce résultat tout.

Comment puis-je réaliser cela dans le serveur SQL?

Répondre

1

Une méthode consiste à insérer les résultats proc dans une table temporaire ou variable à l'aide INSERT...EXEC puis sélectionnez à partir de cette table avec la requête FOR XML souhaitée:

DECLARE @results AS TABLE(col1 int, col2 int); 
INSERT INTO @results EXEC dbo.StoredProcedure; 
SELECT col1, col2 
FROM @results 
FOR XML RAW, ROOT ('root_name'); 
+0

Juste une petite question de côté ici, est-il de toute façon d'exporter ce résultat xml dans un fichier xml dans le disque avec une requête sql? – John

+0

@John, bien que vous puissiez le faire avec SQLCLR ou la laideur xp_cmdshell, je vous suggère de ne pas y aller. C'est trivial enregistrer le XML avec une application ou un script client, comme Powershell. –

+0

Ok, merci pour l'info, je vais certainement regarder dans mes options. – John

1

Comme par this question, vous ne devriez pas choisir parmi les procédure stockée. Aussi, si vous creusez dans cette question, vous trouverez un lien vers un intéressant article décrivant les options que vous avez avec les procédures stockées.

Si j'étais vous, je retournerais un XML avec un paramètre de sortie, ou insert-exec dans une table, puis l'interrogerais avec xml.