SQL Server - 在表或select语句中为每一行输出单个XML文件

时间:2018-03-16 19:39:04

标签: sql-server xml string reporting for-xml-path

我有一个XML文件,它使用表的列作为元素。我试图解决的问题是:

1)如何在select语句中为每个记录生成单个XML文件;

2)使用基于共享服务器上的rowId的唯一名称保存每个xml文件

这里的问题是在Cursor语句中不允许FOR XML和XML数据类型。

CREATE TABLE #T1 
(
    ID INT NOT NULL,
    LName NVARCHAR(30) NULL,
    FName NVARCHAR(30) NULL,
    Comments NVARCHAR(MAX) NULL
);

GO

INSERT INTO #T1 (ID, LName, FName, Comments)
    VALUES
        (1, 'JONOTHAN', 'SMITH', 'is the best friend ever'),
        (2, 'ROGER', 'SHU`LTS', 'is the boss!'),
        (3, 'Jeremy', 'Deimer', 'is the a good drama actor'),
        (4, 'Alexandra', 'Norusis', 'is the smart feminist');

GO

SELECT 
    t.ID, 
    t.LName, 
    t.FName, 
    t.Comments
FROM #T1 t
    FOR XML PATH('BODY') --, ROOT ('MyProject');

上面的根标签被注释掉,因为我想要的XML文件输出" Body"在" FOR XML PATH(' BODY')"中指定将是根标记本身,因为每行数据应该有一个XML文件。

以下是XML文件格式的所需输出:

<Body>
  <Project>2538</Project>
  <Title>SERVICE, MAINTENANCE, REPAIR, TESTING </Title>
  <Summary> Install cabling and provide testing of cabling for </Summary>
  <Requirement>Operations Maintenance|</Requirement>
  <CodeDescription>93609 - Alarm Equipment|</CodeDescription>
</Body>

0 个答案:

没有答案