我希望在存储过程中执行类似的操作,其中dbo.Ordex_Select_Things_as_Xml_Function
是一个返回XML的函数。
当我运行它时,我收到一个空根“事物”节点,例如()。如何从函数中返回XML作为<thing>
的子节点?我正在使用SQL Server 2005.
create procedure dbo.Ordex_Select_Things_as_Xml(
@UserID uniqueidentifier
,@ThingID uniqueidentifier = null
,@Recursive bit = 1
)
as
begin try
--- Some other stuff here...
select top 1
LastUpdated.LastUpdatedDate as '@lastUpdatedDate'
,(
dbo.Ordex_Select_Things_as_Xml_Function(@UserID, @ThingID, 1, 1)
)
from dbo.LastUpdated
order by LastUpdated.LastUpdatedDate desc
for xml path('things'), type
--- Some other stuff here...
end try
答案 0 :(得分:3)
我无法分辨为什么你的代码不起作用。这是一个有效的样本。你可以将我的工作应用到你的案例中并找出差异。
返回xml的函数
create function [dbo].[XMLFunc]() returns xml
as
begin
return '<root><item>1</item><item>2</item></root>'
end
使用XMLFunc的查询
declare @TestTable table (id int)
insert into @TestTable values (1)
insert into @TestTable values (2)
select
tt.id,
[dbo].[XMLFunc]()
from @TestTable as tt
for xml path('things')
产生的xml
<things>
<id>1</id>
<root>
<item>1</item>
<item>2</item>
</root>
</things>
<things>
<id>2</id>
<root>
<item>1</item>
<item>2</item>
</root>
</things>