在SQL2008中使用XML应对不确定结构的参数

目的:统一接口,当数据结构发生变化时,前后端业务接口不发生变化,由业务具体解析结构。

规则:确定的接口用参数表(多行提交),不确定的参数用XML

 

  1. DECLARE @r TABLE
  2.     (
  3.       HardwareNo INT ,
  4.       emvno INT ,
  5.       DATA XML
  6.     )
  7. INSERT INTO @r
  8. VALUES ( 1, 1,
  9.           'meter1run100work80dead20' ),
  10.         ( 2, 1,
  11.           'meter21run100work80dead20' ),
  12.         ( 3, 1,
  13.           'meter31run100work80dead20good210' )
  14.  
  15.  
  16. SELECT *
  17. FROM @r
  18.  
  19.  
  20. DECLARE @xml XML
  21. SELECT @xml = data
  22. FROM @r
  23. SELECT T.c.value('k[1]', 'varchar(20)') k ,
  24.         T.c.value('v[1]', 'varchar(20)') v
  25. FROM @xml.nodes('/d') T ( c )
  26.  
  27.  
  28.  
  29. SELECT HardwareNo ,
  30.         T.c.value('k[1]', 'varchar(20)') k ,
  31.         T.c.value('v[1]', 'varchar(20)') v
  32. FROM @r
  33.         CROSS APPLY data.nodes('/d') AS T ( c )

 

输出结果:

 

  1. (3 行受影响)
  2. HardwareNo emvno DATA
  3. 1 1 meter1run100work80dead20
  4. 2 1 meter21run100work80dead20
  5. 3 1 meter31run100work80dead20good210
  6.  
  7. (3 行受影响)
  8.  
  9. k v
  10. -------------------- --------------------
  11. meter 31
  12. run 100
  13. work 80
  14. dead 20
  15. good 210
  16.  
  17. (5 行受影响)
  18.  
  19. HardwareNo k v
  20. ----------- -------------------- --------------------
  21. 1 meter 1
  22. 1 run 100
  23. 1 work 80
  24. 1 dead 20
  25. 2 meter 21
  26. 2 run 100
  27. 2 work 80
  28. 2 dead 20
  29. 3 meter 31
  30. 3 run 100
  31. 3 work 80
  32. 3 dead 20
  33. 3 good 210
  34.  
  35. (13 行受影响)

 

 

 

 

 

 

你可能感兴趣的:(在SQL2008中使用XML应对不确定结构的参数)