目的:统一接口,当数据结构发生变化时,前后端业务接口不发生变化,由业务具体解析结构。
规则:确定的接口用参数表(多行提交),不确定的参数用XML
?
????(
??????DATA XML
????)
??????????‘<d><k>meter</k><v>1</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d>‘ ),
????????( 2, 1,
??????????‘<d><k>meter</k><v>21</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d>‘ ),
????????( 3, 1,
??????????‘<d><k>meter</k><v>31</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d><d><k>good</k><v>210</v></d>‘ )
?
?
?
?
????????T.c.value(‘v[1]‘, ‘varchar(20)‘) v
FROM @xml.nodes(‘/d‘) T ( c )
?
?
?
????????T.c.value(‘k[1]‘, ‘varchar(20)‘) k ,
????????T.c.value(‘v[1]‘, ‘varchar(20)‘) v
????????CROSS APPLY data.nodes(‘/d‘) AS T ( c )
?
输出结果:
?
(3 行受影响)
HardwareNo emvno DATA
1 1 <d><k>meter</k><v>1</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d>
2 1 <d><k>meter</k><v>21</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d>
3 1 <d><k>meter</k><v>31</v></d><d><k>run</k><v>100</v></d><d><k>work</k><v>80</v></d><d><k>dead</k><v>20</v></d><d><k>good</k><v>210</v></d>
?
(3 行受影响)
?
k v
-------------------- --------------------
meter 31
run 100
dead 20
good 210
?
(5 行受影响)
?
HardwareNo k v
----------- -------------------- --------------------
1 meter 1
1 run 100
1 dead 20
2 meter 21
2 run 100
2 dead 20
3 meter 31
3 run 100
3 dead 20
3 good 210
?
(13 行受影响)
?
?
?
?
?
?
在SQL2008中使用XML应对不确定结构的参数
原文:http://www.cnblogs.com/QinQouShui/p/3968118.html