簡體   English   中英

從存儲過程中讀取C#XML輸出會從TEMP表SQL Server中返回null

[英]Reading into C# XML output from stored procedure returns null from TEMP tables SQL Server

我有一個存儲過程,它返回以下輸出:

DECLARE @ExistingXML XML =
(
    SELECT TOP 2 * 
    FROM #xmlInput 
    FOR XML PATH('Record'), ROOT('Records'), ELEMENTS
);

DECLARE @XmlWithDeclaration VARCHAR(MAX) =
(
    SELECT '<?xml version="1.0" encoding="windows-1252"?>'
           +
           '<test>hello</test>'
           --CONVERT(VARCHAR(MAX),@ExistingXml)
);


SELECT @XmlWithDeclaration;

當使用'<test>hello</test>' ,它可以很好地工作。 但是,當從CONVERT(VARCHAR(MAX),@ExistingXml)語句讀取數據時。 它從不返回臨時表中的值。 但是,此存儲過程-從SSMS執行時-可以很好地顯示輸出。

我試圖通過下面的代碼閱讀。 請忽略@ReportID因為這是我嘗試做的虛假事情。

string xmlResult = await DLContext.Database.SqlQuery<string>("exec [dw].[spPROCName] @ReportID"
                   , new SqlParameter("@ReportID", 8)).FirstOrDefaultAsync();

if (!string.IsNullOrEmpty(xmlResult))
    Console.WriteLine($"XML RESULT :{xmlResult}");
else
    Console.WriteLine("--Failed--. No Result or null");

它總是顯示其他部分,而不是我可以得到兩個結果的肯定方案。

知道為什么嗎?

更新:另一件事是,當我從物理表中提取數據時,上面的代碼工作得很好。 但是,對於臨時表,它失敗了,因為在解析6MB xml文件時將插入臨時表數據。 那可能是原因嗎?

根據您的編碼,您正在Sql服務器中使用臨時表。 會話關閉后,臨時表會自毀。 因此,您必須使用不同的方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM