2

改善と呼ばれるテーブルを持つSQLServer2005データベースがあります。

改善の中には、TransactionIDと呼ばれるフィールドとCommentsと呼ばれるフィールドがあります。[コメント]フィールドは、次のようなエントリを持つXMLデータ型です。

<Comment>
    <CreatedBy>Bob</CreatedBy>
    <CreatedDateTime>2009-08-24T11:36:13.020774+01:00</CreatedDateTime>
    <CreaterRole>Manager</CreaterRole>
    <CreationStage>INITIAL REVIEW</CreationStage>
    <CreationStatus>APPROVED</CreationStatus>
    <UserComment>Approved</UserComment>
</Comment>
<Comment>
    <CreatedBy>Bob</CreatedBy>
    <CreatedDateTime>2009-08-24T11:36:25.7240616+01:00</CreatedDateTime>
    <CreaterRole>Manager</CreaterRole>
    <CreationStage>CAPTURE</CreationStage>
    <CreationStatus>ACCEPTED</CreationStatus>
    <UserComment />
</Comment>

次の行に沿って追加のエントリを入力する必要があります。

 <Comment>
    <CreatedBy>Bob</CreatedBy>
    <CreatedDateTime>2013-01-29T11:36:25.7240616+01:00</CreatedDateTime>
    <CreaterRole>Manager</CreaterRole>
    <CreationStage>CLOSED</CreationStage>
    <CreationStatus>CLOSED</CreationStatus>
    <UserComment>Closed as agreed<UserComment />
 </Comment>

ここで、TransactionID=トランザクション番号。

インターネット上でSETを使用してエントリを修正するための解決策をいくつか見つけましたが、実際にエントリを追加する方法がわかりません。

誰かがこれを手伝ってくれませんか?

よろしくお願いします。

Kev。

4

1 に答える 1

1
declare @TransactionID int
declare @Comment xml

set @TransactionID = 1
set @Comment = '
<Comment>
    <CreatedBy>Bob</CreatedBy>
    <CreatedDateTime>2013-01-29T11:36:25.7240616+01:00</CreatedDateTime>
    <CreaterRole>Manager</CreaterRole>
    <CreationStage>CLOSED</CreationStage>
    <CreationStatus>CLOSED</CreationStatus>
    <UserComment>Closed as agreed</UserComment>
</Comment>'

update improvements 
set Comments.modify('insert sql:variable("@Comment") as last into /')
where TransactionID = @TransactionID
于 2013-01-29T18:06:20.947 に答える