1

XML の「Request For Quote」ドキュメントの処理について、誰かがチュートリアルを教えてくれたり、提案をくれたりしないかと思っていました。SQL Server 2005 を使用します。例:

<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 に足を踏み入れるだけです。このドキュメントを細断して個々の品目に分け、それぞれを番号で識別し、検証して価格を計算する必要があります。また、いずれかを追加/編集/削除できる必要があります。行をテーブルに入れる方法はわかりますが、連番で行を識別してストアド プロシージャを適用する方法はわかりません。validate line 6calc price for line 3 delete line 4change line 2 to Yellowなど のリクエストをランダムに処理できるようにする必要があります。

個々の明細項目を細断してリレーショナル テーブルに格納するのではなく、ドキュメント全体を XML 列として格納し、それに対してトランザクションを実行するのが最善の方法だと思います。

アドバイス、コード、URLなどをいただければ幸いです。

4

1 に答える 1

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)

それぞれ番号付き

それほど簡単ではありません。この答えを見てください。XQuery とノード ID

また、いずれかを追加/編集/削除できる必要があります

modify() メソッドを使用するだけです (xml データ型)

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

6 行目を取得するには、次のようにする必要があります。

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)

/MyQuote/LineItems/Line[6]と同じです/MyQuote/LineItems/Line[position()=6]

細断処理を行って個々の項目をリレーショナル テーブルに格納するのではなく、ドキュメント全体を XML 列として格納し、それに対してトランザクションを実行するのが最善の方法だと思います。

あなたにとって何が最適かはわかりませんが、やむを得ない理由がない限り、データをテーブルに細断処理す​​ることは間違いありません。

于 2011-07-20T21:39:45.423 に答える