2009-05-27 59 views

回答

0

對於那些使用SQL Server 2000,FOR XML基本是沒用的;你不能生成的XML分配到一個變量,插入表,等我有需要時做手工,這是我的示例:

SET NOCOUNT ON 

create table #parcelData (
    parcelID int 
    , [description] varchar(20) 
) 
--insert sample data 
insert into #parcelData 
select 1, 'apples' UNION 
select 3, 'oranges' UNION 
select 25, 'bananas' UNION 
select 69, 'maracuja' 


print '-- Example 1: FOR XML RAW --' 
select parcelID as pID 
from #parcelData 
ORDER BY parcelID 
FOR XML RAW 
--> <row pID="17"/><row pID="25"/><row pID="26"/><row pID="333"/> 



print '-- Example 2: Build XML Manually --' 

declare @parcelRow varchar(50), @dummy int 
    , @xmlRowStr varchar(8000) 
set @xmlRowStr = '' -- initialize. 

DECLARE parcel_cursor CURSOR FOR 
    select DISTINCT '<row pID="' + cast(parcelID as varchar(10)) + '"/>', parcelID as parcelRow 
    from #parcelData 
    ORDER BY parcelID 
OPEN parcel_cursor 

FETCH NEXT FROM parcel_cursor 
INTO @parcelRow, @dummy 

WHILE @@FETCH_STATUS = 0 BEGIN 
    -- build the xml row by row. 
    set @xmlRowStr = @xmlRowStr + @parcelRow 

    -- Get next row 
    FETCH NEXT FROM parcel_cursor 
    INTO @parcelRow, @dummy 
END 

CLOSE parcel_cursor 
DEALLOCATE parcel_cursor 
--print @xmlRowStr 

-- wrap a root element around 
if @xmlRowStr != '' begin 
    set @xmlRowStr = '<ROOT>' + @xmlRowStr + '</ROOT>' 
end 
select @xmlRowStr as XmlOut 


DROP TABLE #parcelData 

SET NOCOUNT OFF 
+0

嗯工作..你讓我想起了西番蓮慕斯。 YUM! – ErikE 2012-10-09 20:17:27

+1

請注意:SQL 2000上的環回鏈接服務器無法解決問題。 FOR XML查詢的結果是數據類型圖像。這甚至不是一個明智的價值。你會奮鬥,搏鬥,最終只會浪費時間。 – ErikE 2012-10-09 21:02:51