0

ストアド プロシージャを使用して、複数のノードを持つ XML プロジェクト ファイルからデータを抽出するために、XML クロス適用を適用しています。
ストアドプロシージャは次のとおりです

INSERT INTO UCDetails
SELECT 
Usecase.value('@UserID','VARCHAR(100)') AS UCId, --ATTRIBUTE 
Usecase.value('@Name','VARCHAR(100)') AS UCName, --ATTRIBUTE 
Usecase.value('@PmAuthor','VARCHAR(100)') AS UCActor, --ATTRIBUTE 
UCPrecon.value('@Value','VARCHAR(MAX)') AS UCPre, --ATTRIBUTE 
UCPostcon.value('@Value','VARCHAR(MAX)') AS UCPost, --ATTRIBUTE 


FROM
@xml.nodes('/Project/Models/UseCase')AS TAB(Usecase) OUTER  
apply @xml.nodes('/Project/Models/UseCase/TaggedValues/TaggedValueContainer/ModelChildren/TaggedValue[5] ')AS TAB1(UCPrecon)OUTER  
apply @xml.nodes('/Project/Models/UseCase/TaggedValues/TaggedValueContainer/ModelChildren/TaggedValue[6]')AS TAB2(UCPostcon)

END

以下に示すように、単一行のデータのみを取得する代わりに、クロス乗算行を取得しています

UCId UCName UCActor UCPre UCPost        
 UC01 ログイン Bilal Haider ユーザーは登録する必要があります ユーザーは正常にログインされました      

UC01 Login Bilal Haider User must be Registered User is added   

UC01 Login Bilal Haider ユーザーは正常にログインされました ユーザーは正常にログインされました    

UC01 ログイン Bilal Haider ユーザーが正常にログインされました ユーザーが追加されました   

UC02 ユーザーの追加 Bilal Haider ユーザーは登録する必要があります ユーザーは正常にログインされました   

UC02 Add User Bilal Haider User must be Registered User is added  

UC02 ユーザーの追加 Bilal Haider ユーザーが正常にログインされました ユーザーが正常にログインされました    

UC02 ユーザーの追加 Bilal Haider ユーザーが正常にログインされました ユーザーが追加されました

このような結果を投稿して申し訳ありません正しい行は太字で強調表示されていますが、他のすべての行を取得しているのはなぜですか?

XML ファイル リンク: XML ファイル

4

1 に答える 1

1

に対してクロス適用を使用しないでくださいTaggedValues。代わりに、values 句で xPath を指定してください。

select T.X.value('@UserID', 'varchar(100)'),
       T.X.value('@Name', 'varchar(100)'),
       T.X.value('@PmAuthor', 'varchar(100)'),
       T.X.value('(TaggedValues/TaggedValueContainer/ModelChildren/TaggedValue)[5]/@Value', 'varchar(max)'),
       T.X.value('(TaggedValues/TaggedValueContainer/ModelChildren/TaggedValue)[6]/@Value', 'varchar(max)')
from @xml.nodes('/Project/Models/UseCase') as T(X)

結果

------ ---------- ------------- ------------------------------ ------------------------------
UC01   Login      Bilal Haider  User must be Registerd         User is Loggined sucessfully
UC02   Add User   Bilal Haider  User is Loggined sucessfully   User is added
于 2015-01-12T10:20:42.347 に答える