我有一个名为
的存储过程usp_Employee_GetInfo
此proc在执行后返回一个表。 如下所示:
Id Name DeptID
1 AAA 10
我想创建一个在执行后返回xml的新过程。 它包括上面的proc结果作为一个子节点,如下所示:
<company Name="XXX">
<Emp>
<Id>1</Id>
<Name>AAA</Name>
<DeptID>10</DeptID>
</Emp>
</company>
<company Name="YYY">
<Emp>
<Id>2</Id>
<Name>BBB</Name>
<DeptID>20</DeptID>
</Emp>
</company>
你们可以建议使用现有proc获得所需输出的最佳方法。 谢谢你。
答案 0 :(得分:1)
您可以声明表变量。将SP结果放在此表中并创建所需的XML:
DECLARE @emp TABLE (
Id int,
[Name] nvarchar(max),
DeptID int,
company nvarchar(max)
)
INSERT INTO @emp
EXEC usp_Employee_GetInfo
--F.e. output of SP is:
--Id Name DeptID company
--1 AAA 10 XXX
--2 BBB 20 YYY
SELECT company as 'company/@name',
emp.Id as 'Emp/id',
emp.[Name] as 'Emp/Name',
emp.DeptID as 'Emp/DeptID'
FROM @emp
FOR XML PATH('')
将输出:
<company name="XXX" />
<Emp>
<id>1</id>
<Name>AAA</Name>
<DeptID>10</DeptID>
</Emp>
<company name="YYY" />
<Emp>
<id>2</id>
<Name>BBB</Name>
<DeptID>20</DeptID>
</Emp>