Objective: Unified interface, when the data structure changes, the front-end service interface does not change, by the business specific analytic structure.
Rules: The identified interfaces are presented with a parameter table (MultiRow), and the indeterminate parameters are in XML
?
- DECLARE @r TABLE
- ???? (
- ?????? Hardwareno INT,
- ?????? Emvno INT,
- ?????? DATA XML
- ????)
- INSERT Into @r
- VALUES (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> ‘ )
- ?
- ?
- SELECT *
- from @r
- ?
- ?
- DECLARE @xml XML
- SELECT @xml = Data
- from @r
- SELECT t.c.value ('k[1]', 'varchar') K,
- ???????? T.c.value ('v[1]', 'varchar') v
- from @xml. Nodes ('d') T (c)
- ?
- ?
- ?
- SELECT Hardwareno,
- ???????? T.c.value ('k[1]', 'varchar') K,
- ???????? T.c.value ('v[1]', 'varchar') v
- from @r
- ???????? Cross APPLY data.nodes ('d') as T (c)
?
Output Result:
?
- (3 rows affected)
- 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 rows affected)
- ?
- Kv
- -------------------- --------------------
- Meter 31
- Run 100
- Work the
- Dead 20
- Good 210
- ?
- (5 rows affected)
- ?
- Hardwareno K V
- ----------- -------------------- --------------------
- 1 meter 1
- 1 run 100
- 1 Work 80
- 1 dead 20
- 2 Meter 21
- 2 Run 100
- 2 Work 80
- 2 dead 20
- 3 Meter 31
- 3 Run 100
- 3 Work 80
- 3 dead 20
- 3 Good 210
- ?
- (13 rows affected)
?
?
?
?
?
?
Using XML in SQL2008 to deal with parameters of an indeterminate structure