2017-09-19 44 views
1

我試圖獲取執行的存儲過程的結果作爲結果顯示爲最初的表的XML檢索。從exec存儲過程得到xml結果

我想要做的就是這樣的事情。

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

比方說EXEC dbo.StoredProcedure返回在存儲過程中的表, 我想FOR XML RAW, ROOT ('root_name')來返回整個結果的XML值。

我該如何做到這一點在SQL服務器?

回答

1

的一種方法是使用INSERT...EXEC插入PROC結果到一個臨時表或變量,然後從該表具有所需FOR XML查詢選擇:

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

只是一個小問題在這裏,是否有任何出口該xml結果到一個XML查詢磁盤中的XML文件? – John

+0

@John,雖然你可以用SQLCLR或xp_cmdshell的醜陋來做到這一點,但我建議你不要去那裏。使用客戶端應用程序或腳本(如Powershell)保存XML是很簡單的。 –

+0

好的,謝謝你的信息,我一定會看看我的選擇。 – John

1

作爲每this問題,你不應該從選擇存儲過程。另外,如果您深入研究這個問題,您會發現一個鏈接,指向一個有趣的article,其中描述了存儲過程的選項。

如果我是你,我會返回帶輸出參數的XML或insert-exec到表中,然後用xml查詢。