我将连接的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
答案 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/。