【发布时间】:2018-03-20 15:25:38
【问题描述】:
我一直在阅读这篇文章: https://www.red-gate.com/simple-talk/sql/database-administration/manipulating-xml-data-in-sql-server/
我找到了我需要的东西,但我的情况的唯一区别是我需要使用FOR XML PATH(...) 而不是 ROOT(...) 而不是AUTO 模式。
我有一个使用表格列作为元素的 XML 文件。我要解决的问题:
1) 如何在 select 语句中为每条记录生成一个 XML 文件;
2) 将每个 xml 文件以基于 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(''), ROOT ('body');
以下是当前输出的 XML 文件格式:
<body>
<ID>1</ID>
<LName>JONOTHAN</LName>
<FName>SMITH</FName>
<Comments>is the best friend ever</Comments>
<ID>2</ID>
<LName>ROGER</LName>
<FName>SHU`LTS</FName>
<Comments>is the boss!</Comments>
<ID>3</ID>
<LName>Jeremy</LName>
<FName>Deimer</FName>
<Comments>is the a good drama actor</Comments>
<ID>4</ID>
<LName>Alexandra</LName>
<FName>Norusis</FName>
<Comments>is the smart feminist</Comments>
</body>
以下是所需的输出(基于 ID = 1 的记录)
<body>
<ID>1</ID>
<LName>JONOTHAN</LName>
<FName>SMITH</FName>
<Comments>is the best friend ever</Comments>
<body>
【问题讨论】:
标签: sql-server xml tsql for-xml-path