пользовательская функция, которая манипулирует и возвращает XML из хранимой процедуры - PullRequest
1 голос
/ 26 января 2011

Я хочу сделать что-то подобное в хранимой процедуре, где 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

1 Ответ

3 голосов
/ 27 января 2011

Не могу сказать, почему ваш код не работает.Вот пример, который работает.Вы можете применить то, что я делаю, к вашему делу и выяснить разницу.

Функция, возвращающая 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...