将空格格式添加到SQL FOR XML数据

时间:2015-03-03 15:53:14

标签: sql-server xml tsql

我将连接的SQL表中的数据作为XML导出,然后将其插入到用于导入它的脚本中。

我希望将XML拆分为多行并在输出脚本中缩进。如何将空白格式添加到使用FOR XML生成的XML

以下是使用AdventureWorks2014示例数据库的示例:

DECLARE @XmlData xml = (
    SELECT e.BusinessEntityID, e.HireDate, e.JobTitle, c.FirstName, c.MiddleName, c.LastName
    FROM HumanResources.Employee e 
        INNER JOIN Person.Person c
       ON c.BusinessEntityID = e.BusinessEntityID
    WHERE c.FirstName = 'Rob'
    FOR XML AUTO, ROOT);

DECLARE @ScriptTemplate nvarchar(max) = '
-- This is my import script
-- blah, blah, blah

DECLARE @SolutionXml as xml = ''
##REPLACE_THIS##
'';

DECLARE @SolutionXmlHandle int;
EXEC sp_xml_preparedocument @SolutionXmlHandle OUTPUT, @SolutionXml;

-- blah, blah, blah
';

DECLARE @myScript nvarchar(max) = REPLACE (@ScriptTemplate, '##REPLACE_THIS##', CONVERT(nvarchar(max), @XmlData, 1))

SELECT @XmlData XmlData, @ScriptTemplate ScriptTemplate, @myScript myScript

1 个答案:

答案 0 :(得分:0)

如果您真的必须在存储过程中执行此操作,最好的办法是使用以下函数将SQL CLR库添加到SQL Server中

public static string FormatXML(string xmlData)
{
  XDocument xd = XDocument.Parse(xmlData);
  return xd.ToString();
}

有关SQL CLR的详细信息,请参阅http://blog.sqlauthority.com/2008/10/19/sql-server-introduction-to-clr-simple-example-of-clr-stored-procedure/