私はこのようなXMLを持っています:
<Job>
<Piece PieceID="0001">
<OperatorID>O1</OperatorID>
<MachineID>M1</MachineID>
<Status>OK</Status>
</Piece>
<Piece PieceID="0002">
<OperatorID>O1</OperatorID>
<MachineID>M1</MachineID>
<Status>ERROR</Status>
</Piece>
</Job>
このXMLは、XML型パラメーターを介してストアドプロシージャに渡されます。ストアドプロシージャは、XMLを解析し、値をテーブル内の個別の列(列)に格納しPieceID, OperatorID, MachineID, Status
ます。
このストアドプロシージャは、各ピースが存在しない場合は挿入するか、ピースがテーブルにすでに存在する場合は更新する必要がありますX
。上記の例では、オペレーターがマシンのエラーを修正してジョブを再実行すると、ステータスが「OK」として表示される場合がありPieceID 0002
ます。その場合、PieceID=0001
は無視する必要があります。
処理する部分が1つしかない場合(MERGE
SQL Server 2008のコマンド?)、これを行う方法を知っています。数百個のピースを効率的に実行することに頭を悩ませることはできません。
この問題に対する効率的なアプローチを提案してください。ありがとうございました。