0

以下のxml構造があります。戻り値を使用して一時テーブルを作成しようとしていますが、できませんでした。

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 ')' 付近の構文が正しくありません。

4

1 に答える 1

3

代わりに次のようなものを試してください。

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

このようにすれば問題なく動作します。

于 2012-07-04T13:32:38.670 に答える