2011-12-28 88 views
0

我有一个存储过程,我宣布一个变量作为输出。在这个过程中,我需要有多个选择语句。当他们不在同一个输出中时,我没有问题创建多个select语句,但是我找不到这个。如何在存储过程的输出中使用多个select语句?

经过部分程序读取:SET @XmlOutput = (后,我想添加更多的选择语句。

谢谢你的帮助!

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

不知道你要在这里做什么,但你可以附加一个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 
); 
+0

我需要在xml文件中添加更多的元素,它们与上面的“item”元素处于同一级别。这些只是不会改变的静态元素。我很抱歉,因为没有更多。 – John 2011-12-28 16:37:21

+0

@John请参阅编辑。 – GSerg 2011-12-28 16:45:09

+0

谢谢!它现在有效! – John 2011-12-28 22:15:03

相关问题