在SQL2008中使用XML应对不确定结构的参数
时间:2022-03-13 23:41
目的:统一接口,当数据结构发生变化时,前后端业务接口不发生变化,由业务具体解析结构。
规则:确定的接口用参数表(多行提交),不确定的参数用XML
?
- @r
- ????(
- ??????HardwareNo ,
- ??????emvno ,
- ??????DATA XML
- ????)
- @r
- ( 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>‘ )
- ?
- ?
- *
- @r
- ?
- ?
- @xml XML
- @xml = data
- @r
- T.c.(‘k[1]‘, ‘varchar(20)‘) k ,
- ????????T.c.(‘v[1]‘, ‘varchar(20)‘) v
- @xml.nodes(‘/d‘) T ( c )
- ?
- ?
- ?
- HardwareNo ,
- ????????T.c.(‘k[1]‘, ‘varchar(20)‘) k ,
- ????????T.c.(‘v[1]‘, ‘varchar(20)‘) v
- @r
- ???????? APPLY data.nodes(‘/d‘) 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></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></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></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
- 80
- dead 20
- good 210
- ?
- (5 行受影响)
- ?
- HardwareNo k v
- ----------- -------------------- --------------------
- 1 meter 1
- 1 run 100
- 1 80
- 1 dead 20
- 2 meter 21
- 2 run 100
- 2 80
- 2 dead 20
- 3 meter 31
- 3 run 100
- 3 80
- 3 dead 20
- 3 good 210
- ?
- (13 行受影响)
?
?
?
?
?
?