2012-07-04 51 views
0

我有下面的xml结构。我正在尝试使用返回结果创建临时表,但我无法做到。在sql server中使用xml.nodes函数创建临时表

declare @xml xml 
set @xml = ' 
<Root> 
    <ValueHolder> 
    <Value>3.00</Value> 
    <IsNoteDirty>false</IsNoteDirty> 
    <Timestamp> 
     <StampType>Month</StampType> 
     <Stamp>3</Stamp> 
     <Year>2007</Year> 
    </Timestamp> 
    </ValueHolder> 
    <ValueHolder> 
    <Value>23.00</Value> 
    <IsNoteDirty>false</IsNoteDirty> 
    <Timestamp> 
     <StampType>Month</StampType> 
     <Stamp>3</Stamp> 
     <Year>2007</Year> 
    </Timestamp> 
    </ValueHolder> 
</Root>' 


select Tab.Col.value('(Value)[1]','MONEY') 
      from @xml.nodes('/Root/ValueHolder') Tab(Col) 

此代码工作完美。我想要做的是把这个结果放到临时表中。我想这一个,但它不工作

select * into #TempTable 
    from (select Tab.Col.value('(Value)[1]','MONEY') 
      from @xml.nodes('/Root/ValueHolder') Tab(Col)) 

的错误消息是

消息102,级别15,状态1,第26行附近有语法错误)“。

+0

您需要派生表的表别名。 –

回答

3

尝试这样代替:

select MoneyValue = Tab.Col.value('(Value)[1]', 'MONEY') 
into #TempTable 
from @xml.nodes('/Root/ValueHolder') Tab(Col) 

作品就好了,如果我做这种方式。