[英]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.