我有一个存储过程,我将变量声明为输出。在这个过程中,我需要有多个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
答案 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
);