2011-07-19 10 views
1

誰かが私にチュートリアルを指すことができるのか、XML "Request For Quote"ドキュメントの処理に関する提案を私に与えてくれるのだろうかと思っていました。 SQL Server 2005を使用しています。例:sql xml order processor

<MyQuote> 
<Header> 
    <Customer>XYZ</Customer> 
    <Material>Wood&</Material> 
<Header> 
<LineItems> 
<Line> 
    <Quantity>32</Quantity> 
    <Model>Chair 350</Model> 
    <Color>Red</Color>  
</Line> 
    . 
</LineItems> 
</MyQuote> 

XQueryで足を濡らすだけです。この文書を個々の明細に分割し、それぞれを番号で識別し、価格を計算して検証する必要があります。また、いずれかを追加/編集/削除できるようにする必要があります。私は行をテーブルに入れる方法を見ることができますが、連番でそれらをIDで識別し、それらにストアドプロシージャを適用する方法はありません。私はランダムに、私は最善の方法は、XML列として文書全体を保存し、破砕とは対照的に、それに対して取引することであると仮定していますすべての要求などvalidate line 6calc price for line 3delete line 4change line 2 to Yellowなど

を処理できるようにする必要があります個々のラインアイテムをリレーショナルテーブルに保存することはできますか?

アドバイス、コード、URLなどは非常に高く評価されます。

答えて

1

誰かが私にチュートリアルを指し示すことができるか、または XML「Request For Quote」ドキュメントの処理に関する提案を教えてもらえませんか。

:ここ SQL Server 2005の

を使用すると、いくつかの有用なページです数

それほど簡単で

select 
    T.N.value('Quantity[1]', 'int') as Quantity, 
    T.N.value('Model[1]', 'varchar(25)') as Model, 
    T.N.value('Color[1]', 'varchar(25)') as Color 
from @XML.nodes('/MyQuote/LineItems/Line') as T(N) 

それぞれ1:

私は、個々のラインアイテム

これはあなたにすべての行を与えるには、このドキュメントを細断処理す​​る必要があります。この答えを見てください。

select 
    T.N.value('Quantity[1]', 'int') as Quantity, 
    T.N.value('Model[1]', 'varchar(25)') as Model, 
    T.N.value('Color[1]', 'varchar(25)') as Color 
from @XML.nodes('/MyQuote/LineItems/Line[6]') as T(N) 
XQuery and Node Ids

また、単にこれにあなたがすべきライン6を取得するにはmodify() Method (xml Data Type)

I need to randomly be able to process any request such as validate line 6, calc price for line 3 delete line 4, change line 2 to Yellow 

を使用するいずれかの

を追加/編集/削除できるようにする必要があります

/MyQuote/LineItems/Line[6]はと同じです

私は最善の方法は、XML 列として文書全体を保存し、リレーショナル表の 個々のラインアイテムを破砕して保存するとは対照的に、それに対して取引することであると仮定していますか?

あなたに最適なものがわからないのですが、本当に魅力的な理由がない限り、データをテーブルに細断することは間違いありません。