2012-04-20 44 views
1

我正在使用SQL Server 2008,而且我對編寫sql相當陌生。我的目標是將數據從表格導出爲xml格式,以創建可用於我們網站的CAP xml文件。目前,我只是寫一些選擇語句來以正確的格式檢索數據。這裏是代碼:在sql中轉義特殊字符以生成xml文件

select (SELECT TOP 5 [Master_Incident_Number] AS incidents 
,[Jurisdiction] AS jurisdiction 
,[Response_Date] AS Date 
FROM [ESCAD_DW_System].[dbo].[CurrentIncidents_V] Incident 
FOR XML PATH ('area'), type) AS Alert for xml path (''), 
ROOT ('?xml version = "1.0" encoding = "UTF-8"?') 

但是,我得到'無效的XML標識符'錯誤'?'符號。誰能幫忙?

回答

0

您不能使用ROOT添加xml編碼標記。唯一的方法是將xml輸出轉換爲varchar(max),並用您的編碼標籤進行前置。請記住,默認情況下FOR XML輸出爲UTF-16,因此您的UTF-8編碼可能是不必要的。話雖如此,這裏是使用UDF將XML轉換成varchar(max)一個簡單的例子:

create function gimmexml() 
returns varchar(max) 
as 
begin 
    return (
     select a='some', b='xml' 
     for xml path ('')   
    ) 
end 
go 

select '<?xml version="1.0" encoding="UTF-8"?>'+dbo.gimmexml(); 

結果:

<?xml version="1.0" encoding="UTF-8"?><a>some</a><b>xml</b> 

延伸閱讀: http://www.devnewsgroups.net/group/microsoft.public.sqlserver.xml/topic60022.aspx http://msdn.microsoft。 com/en-us/library/ms345137%28v = sql.90%29.aspx