sql XML转table

将查询出来的datatable 转XML  在传到sql里面转成sql里面的table

   declare @Xml xml
        Declare @sql Nvarchar(max)
        set @Xml='<root><columnList><columnItem columnName="sStyleCode"></columnItem><columnItem columnName="sColorName"></columnItem><columnItem columnName="sSizeName"></columnItem><columnItem columnName="sCcount"></columnItem><columnItem columnName="sAddCount"></columnItem><columnItem columnName="sIsHeadLevel"></columnItem></columnList><dataTable><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>Head</sSizeName><sCcount>25860</sCcount><sAddCount>1140</sAddCount><sIsHeadLevel>1</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>34</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>35</sSizeName><sCcount>1687</sCcount><sAddCount>313</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>36</sSizeName><sCcount>2829</sCcount><sAddCount>171</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>37</sSizeName><sCcount>3828</sCcount><sAddCount>172</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>38</sSizeName><sCcount>4828</sCcount><sAddCount>172</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>39</sSizeName><sCcount>5838</sCcount><sAddCount>162</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>40</sSizeName><sCcount>6850</sCcount><sAddCount>150</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>41</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>绿色</sColorName><sSizeName>42</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>Head</sSizeName><sCcount>26940</sCcount><sAddCount>60</sAddCount><sIsHeadLevel>1</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>34</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>35</sSizeName><sCcount>1992</sCcount><sAddCount>8</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>36</sSizeName><sCcount>2985</sCcount><sAddCount>15</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>37</sSizeName><sCcount>3985</sCcount><sAddCount>15</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>38</sSizeName><sCcount>4985</sCcount><sAddCount>15</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>39</sSizeName><sCcount>5993</sCcount><sAddCount>7</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>40</sSizeName><sCcount>7000</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>41</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>黄色</sColorName><sSizeName>42</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>Head</sSizeName><sCcount>26910</sCcount><sAddCount>90</sAddCount><sIsHeadLevel>1</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>34</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>35</sSizeName><sCcount>1987</sCcount><sAddCount>13</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>36</sSizeName><sCcount>2979</sCcount><sAddCount>21</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>37</sSizeName><sCcount>3978</sCcount><sAddCount>22</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>38</sSizeName><sCcount>4978</sCcount><sAddCount>22</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>39</sSizeName><sCcount>5988</sCcount><sAddCount>12</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>40</sSizeName><sCcount>7000</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>41</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>粉色</sColorName><sSizeName>42</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>Head</sSizeName><sCcount>26910</sCcount><sAddCount>1090</sAddCount><sIsHeadLevel>1</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>34</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>35</sSizeName><sCcount>1987</sCcount><sAddCount>1013</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>36</sSizeName><sCcount>2979</sCcount><sAddCount>21</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>37</sSizeName><sCcount>3978</sCcount><sAddCount>22</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>38</sSizeName><sCcount>4978</sCcount><sAddCount>22</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>39</sSizeName><sCcount>5988</sCcount><sAddCount>12</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>40</sSizeName><sCcount>7000</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>41</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>兰色</sColorName><sSizeName>42</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>Head</sSizeName><sCcount>37801</sCcount><sAddCount>1199</sAddCount><sIsHeadLevel>1</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>34</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>35</sSizeName><sCcount>3703</sCcount><sAddCount>297</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>36</sSizeName><sCcount>4815</sCcount><sAddCount>185</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>37</sSizeName><sCcount>5805</sCcount><sAddCount>195</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>38</sSizeName><sCcount>6815</sCcount><sAddCount>185</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>39</sSizeName><sCcount>7823</sCcount><sAddCount>177</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>40</sSizeName><sCcount>8840</sCcount><sAddCount>160</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>41</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>青色</sColorName><sSizeName>42</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>Head</sSizeName><sCcount>26560</sCcount><sAddCount>440</sAddCount><sIsHeadLevel>1</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>34</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>35</sSizeName><sCcount>1887</sCcount><sAddCount>113</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>36</sSizeName><sCcount>2929</sCcount><sAddCount>71</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>37</sSizeName><sCcount>3928</sCcount><sAddCount>72</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>38</sSizeName><sCcount>4928</sCcount><sAddCount>72</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>39</sSizeName><sCcount>5938</sCcount><sAddCount>62</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>40</sSizeName><sCcount>6950</sCcount><sAddCount>50</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>41</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow><dataRow><sStyleCode>L10351</sStyleCode><sColorName>玫红</sColorName><sSizeName>42</sSizeName><sCcount>0</sCcount><sAddCount>0</sAddCount><sIsHeadLevel>2</sIsHeadLevel></dataRow></dataTable></root>'
       
 DROP TABLE #tabColumn
-- 存储列名的表
Create table #tabColumn(columnName varchar(50))               
              
              
 DROP TABLE #productNum
-- 存储传入的导出数量表             
Create table #productNum(ID int identity(1,1))
              
DECLARE @hdoc int,
@columnName varchar(200),                -- 列名字符串
@columnNameType varchar(800)             -- 列名带数据类型字符串
              
EXEC sp_xml_preparedocument @hDoc OUTPUT,@Xml          
Insert into #tabColumn(columnName)       
SELECT columnName
FROM OPENXML(@hDoc,'/root/columnList/columnItem',1)  
WITH(
columnName varchar(50)
)      
                           
Select @columnName = Isnull(@columnName + ',','')  + columnName, @columnNameType = Isnull(@columnNameType + ',','') + columnName + ' varchar(50) '
From #tabColumn
SELECT @hDoc
SELECT @columnName
SELECT @columnNameType
              
Set @sql = 'Alter table #productNum add ' + @columnNameType
Exec sp_executesql @sql    
--print       @sql
              
Set @sql = 'Insert into #productNum(' + @columnName + ')  SELECT ' + @columnName + ' FROM OPENXML(@hDoc,''/root/dataTable/dataRow'',2) WITH( ' + @columnNameType + ')'
--print   @sql
Exec sp_executesql @sql,N'@hdoc int',@hdoc             
                           
EXEC sp_xml_removedocument @hDoc
              
select * from #tabColumn
select * from #productNum
              

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值