0
我試圖通過SQL爲負載測試生成一些XML,但我在正確構建XML時遇到了問題。這是我有:SQL中的XML:當使用表列而不是字符串時,元素值的計算方式不同
-- Generate XML from table
SELECT id AS '@id',
action AS '@action',
actionTime AS '@actionTime',
firstName AS '@firstName',
lastName AS '@lastName',
email AS '@email',
(SELECT isActive AS '@isActive',
actionTime AS '@actionTime',
displayName AS '@displayName',
identifierId
FOR XML PATH('identifier'), TYPE
)
FROM scratch.dbo.Identities
FOR XML PATH('user'), ROOT('Users')
這會生成XML,看起來像這樣:
<Users>
<user id="QALoadTest1" action="add" actionTime="2015-11-01T00:00:00" firstName="Load" lastName="Test1" email="[email protected]">
<identifier isActive="1" actionTime="2015-11-01T00:00:00" displayName="Load Test 1">
<identifierId>1111111111</identifierId>
</identifier>
</user>
</Users>
如果我傳遞一個字符串作爲標識符值,正確生成XML:
SELECT id AS '@id',
action AS '@action',
actionTime AS '@actionTime',
firstName AS '@firstName',
lastName AS '@lastName',
email AS '@email',
(SELECT isActive AS '@isActive',
actionTime AS '@actionTime',
displayName AS '@displayName',
'11111111111'
FOR XML PATH('identifier'), TYPE
)
FROM scratch.dbo.Identities
FOR XML PATH('user'), ROOT('Users')
這將生成以下,這正是我想要的:
<Users>
<user id="QALoadTest1" action="add" actionTime="2015-11-01T00:00:00" firstName="Load" lastName="Test1" email="[email protected]">
<identifier isActive="1" actionTime="2015-11-01T00:00:00" displayName="Load Test 1">11111111111</identifierId>
</user>
</Users>
在這裏使用列值和字符串有什麼區別?有趣的是,當我將列值換成單引號(''' + identifierId + '''
)時,它會生成正確結構的XML,但帶有額外的引號(...displayName="Load Test 1">'11111111111'</identifierId>
)
太棒了,謝謝!工作就像一個魅力:) –