Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为XML数据向TSQL添加空白格式_Sql Server_Xml_Tsql - Fatal编程技术网

Sql server 为XML数据向TSQL添加空白格式

Sql server 为XML数据向TSQL添加空白格式,sql-server,xml,tsql,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

我将从连接的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

如果您确实必须在存储过程中执行此操作,那么最好是使用如下函数将CLR库添加到SQL Server

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

有关SQL CLR的更多信息,请参阅。

这将非常复杂,涉及到T-SQL中-将XML导出到中间层,并使用成熟的编程语言(如C#、Ruby、Java或您可能使用的任何其他语言)对XML进行“按摩”,会容易得多。。。。