簡體   English   中英

每個根節點之后返回SQL Server FOR XML PATH回車

[英]SQL Server FOR XML PATH carriage return after each root node

我在SQL Server 2014中使用FOR XML PATH生成XML文件以發送給我們的供應商之一。 他們的系統要求每個根節點之間用回車/換行符分隔。 這是我用來生成它的T-SQL代碼:

Declare @xmldata xml

set @xmldata = 
(SELECT a.StatementDate AS [stmt_date]
  ,a.CustomerID AS [student_id]
 ,'Upon Receipt' AS [due_date]
 ,a.TotalDue AS [curr_bal]
  ,a.TotalDue AS [total_due]
 ,a.AlternateID AS [alternate_id]
  ,a.FullName AS [student_name]
 ,a.Email AS [student_email]
 ,a.Addr1
 ,a.Addr2
  ,a.Msg AS [message]
  ,(
    SELECT b.StatementDate AS [activity_date]
          ,b.ActivityDesc AS [activity_desc]
          ,b.TermBalance AS [charge]
    FROM #ActivityXML AS b
    WHERE a.CustomerID = b.CustomerID
    ORDER BY a.StatementDate
    FOR XML PATH('activity'),TYPE
   ) 
FROM #BillingStatement AS a
FOR XML PATH('Billing'))

select @xmldata as returnXml    

這很好用,但是返回一個長字符串,節點之間完全沒有分隔。 (我會舉一個例子,但這里看起來就像是一團糟。)

無論如何,我們需要生成一個文件,其中每個<Billing>標記和其中的內容在</Billing>標記關閉后都放在新行中。 我想有一個簡單的解決方案,例如在代碼中的某處插入char(13)+char(10) ,但是我一直無法正常工作。 是否可以,或者是否需要在另一個系統中執行?

根據此處的答復以及其他地方的研究,僅使用T-SQL是不可能的。 我們將需要復制/粘貼輸出,或者使用其他程序來獲取數據並插入換行符。

來自@Shnugo-“ T-SQL本身不支持XML的精美打印。您可以對物理存儲的文件使用CLR方法,服務或任何類型的后期處理。您可以從網格結果中打開XML” xml查看器,然后將輸出復制並粘貼到文本編輯器中。如果XML很大,請不要忘記將網格結果的XML大小設置為無限制。”

暫無
暫無

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

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