使用 SQL Server 2008 和表有一些这样的值:
EMPN ENAME JOB HIREDATE
---- ---------- --------- -----------
7341 SMITH CLERK 17-DEC-1980
7482 ALLEN SALESMAN 20-FEB-1981
我的 XML 在共享文件夹中
<employees>
<employee>
<empno>7369</empno>
<ename>SMITH</ename>
<job>CLERK</job>
<hiredate>17-DEC-1980</hiredate>
</employee>
<employee>
<empno>7499</empno>
<ename>ALLEN</ename>
<job>SALESMAN</job>
<hiredate>20-FEB-1981</hiredate>
</employee>
</employees>
现在需要根据数据库值 (EMPN) 更改我现有的 XML
我们怎么做?
你的问题不是很清楚...
一开始的一些提示:
17-DEC-1980
. 尤其是在 XML 中,您应该使用 ISO8601。您显示的表数据和您提供的 XML 不包含相同的 ID,因此我假设您需要将新员工添加为新的子节点:
DECLARE @existingXML XML=
'<employees>
<employee>
<empno>7369</empno>
<ename>SMITH</ename>
<job>CLERK</job>
<hiredate>17-DEC-1980</hiredate>
</employee>
<employee>
<empno>7499</empno>
<ename>ALLEN</ename>
<job>SALESMAN</job>
<hiredate>20-FEB-1981</hiredate>
</employee>
</employees>';
SET LANGUAGE ENGLISH;
DECLARE @tmpTable TABLE(MPN INT,ENAME VARCHAR(100),JOB VARCHAR(100),HIREDATE DATE);
INSERT INTO @tmpTable VALUES
(7341,'SMITH','CLERK','17-DEC-1980')
,(7482,'ALLEN','SALESMAN','20-FEB-1981');
DECLARE @NewXml XML=
(
SELECT
(
SELECT e.MPN AS [empno]
,e.ENAME AS [ename]
,e.JOB AS [job]
,e.HIREDATE AS [hiredate]
FROM @tmpTable AS e
FOR XML PATH('employee'),TYPE
) AS NewXML
);
SET @existingXML.modify(N'insert sql:variable("@NewXML") as last into (/employees)[1]');
SELECT @existingXML;
如果您需要同步表和 XML 的数据,我会将整个内容切碎到派生表,MERGE
对行数据使用某种方法并从头开始重建 XML。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句