Как использовать несколько операторов выбора в выводе в хранимой процедуре? - PullRequest
0 голосов
/ 28 декабря 2011

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

После части процедуры, которая гласит: SET @XmlOutput = (, я хотел бы добавить больше операторов select.

Спасибо за вашу помощь!

ALTER PROC [dbo].[uspCreateGeoRssFile]
AS
  DECLARE @XmlOutput xml
  SET @XmlOutput = (
      SELECT     
         CustomerName AS Title, esn, longitude, latitude, Device_Alias AS Description
      FROM         
         LS_Variable_Listing AS item
      WHERE     
         (triggers <> N'No Event Recorded') 
         AND (CustomerName = N'Hiland Partners, LLC')
      ORDER BY timestamp_utc DESC
      FOR XML AUTO, ROOT('channel'), ELEMENTS)

  SELECT @XmlOutput

1 Ответ

1 голос
/ 28 декабря 2011

Не уверен, что вы хотите сделать здесь, но вы можете добавить один результат XML к другому:

declare @x xml;
declare @some_more_xml xml;

....

set @x = (select @x, @some_more_xml for xml path(''), type);

Это также может быть встроенным:

set @x = (
  select
    (select 1 as foo for xml raw, root('root1'), type),
    (select 2 as bar for xml raw, root('root2'), type)
  for xml path(''), type
);

Если вы хотите добавить элементы «внутри» некоторого существующего xml, то самый простой способ сделать это - не вводить предложение root до самого конца:

set @x = (
  select
    (select ... for xml auto, type),
    (select ... for xml auto, type)
  for xml path(''), root('channel'), type
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...