如何在存储过程的输出中使用多个select语句?

时间:2011-12-28 16:21:31

标签: sql stored-procedures

我有一个存储过程,我将变量声明为输出。在这个过程中,我需要有多个select语句。当它们不在同一输出中时,我创建多个select语句没有问题,但我无法理解这一点。

在程序的部分内容为: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 个答案:

答案 0 :(得分:1)

不确定你想在这里做什么,但你可以将一个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
);