加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Sql Server 数据库中访问 XML 文件

发布时间:2020-12-12 12:34:58 所属栏目:MsSql教程 来源:网络整理
导读:编程之家 jb51.cc 有时候在编写存储过程当中,比如一个插入或者修改之类的操作,要传入大量的参数,而且还牵涉到多个主外表关系,现在有一种比较便利的方法可行,就是把要插入的数据以xml的形式,传入到存储过程中。 以下为引用的内容: declare @xml varcha
以下为引用的内容:
declare @xml varchar(8000)
declare @idoc int
declare @DeviceMode varchar(20)
declare @EquipAttribute varchar(20)
declare @Printerstyle varchar(20)
declare @Head varchar(20)
declare @Code varchar(20)
declare @Amount varchar(20)
declare @Softedition varchar(20)
declare @i int

--xml中是一个入库表【CSM_B_DeviceRuKu 】和入库明细表【CSM_B_DeviceRuKu_MX 】
set @xml='<?xml version=''1.0'' encoding=''GB2312''?>
<CSM_B_DeviceRuKu BillCode=''BA1059'' EquipAttribute=''0'' Remark=''哈哈'' EnterDate=''2009-10-13'' Person=''1'' Unit=''1'' IsValid=''0'' DeviceTotal=''类型:PCI WKT2开票卡,数量:100;类型:32K大容量IC卡,数量:100;''>
<CSM_B_DeviceRuKu_MX DeviceMode=''0'' EquipAttribute=''PCI WKT2开票卡'' Printerstyle='''' Softedition='''' Head='''' Code=''12313222221111'' Amount=''100'' />
<CSM_B_DeviceRuKu_MX DeviceMode=''1'' EquipAttribute=''32K大容量IC卡'' Printerstyle='''' Softedition='''' Head='''' Code=''43351212333333'' Amount=''100'' />
<CSM_B_DeviceRuKu_MX DeviceMode=''0'' EquipAttribute=''PCI WKT2开票卡'' Printerstyle='''' Softedition='''' Head='''' Code=''12313222221111'' Amount=''100'' />
<CSM_B_DeviceRuKu_MX DeviceMode=''1'' EquipAttribute=''32K大容量IC卡'' Printerstyle='''' Softedition='''' Head='''' Code=''43351212333333'' Amount=''100'' /> 

</CSM_B_DeviceRuKu>'

--通过存储过程sp_xml_preparedocument来解析xml
EXEC sp_xml_preparedocument @idoc output,@xml

--读取xml里面的数据【获取CSM_B_DeviceRuKu的数据】
SELECT EquipAttribute,Person,EnterDate,BillCode,Remark,Unit,IsValid,DeviceTotal
FROM OpenXML(@idoc,'/CSM_B_DeviceRuKu')
WITH CSM_B_DeviceRuKu

-- 【获取CSM_B_DeviceRuKu_MX的所有数据】
SELECT DeviceMode,EquipAttribute,Printerstyle,Softedition,Head,Code,Amount
FROM OpenXML(@idoc,'/CSM_B_DeviceRuKu/CSM_B_DeviceRuKu_MX')
WITH CSM_B_DeviceRuKu_MX
set @i=1


---游标(主要作用是循环读取CSM_B_DeviceRuKu_MX中的数据)
declare item_cursor cursor for
SELECT DeviceMode,Amount FROM OpenXML(@idoc,'/CSM_B_DeviceRuKu/CSM_B_DeviceRuKu_MX') WITH CSM_B_DeviceRuKu_MX
open item_cursor
fetch next from item_cursor into @DeviceMode,@EquipAttribute,@Printerstyle,@Softedition,@Head,@Code,@Amount
while @@Fetch_Status=0
begin

---只是打印出效果,现在@DeviceMode,@Amount 都以全部获得了值,可以对数据库表CSM_B_DeviceRuKu_MX表进行添加和修改
print('这是第'+cast(@i as varchar(20))+'次:::'+@DeviceMode+','+@EquipAttribute+','+@Printerstyle+','+@Softedition+','+@Head+','+@Code+','+@Amount )
set @i=@i+1
fetch next from item_cursor into @DeviceMode,@Amount
end
close item_cursor
deallocate item_cursor

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

  编程之家 52php.cn 有时候在编写存储过程当中,比如一个插入或者修改之类的操作,要传入大量的参数,而且还牵涉到多个主外表关系,现在有一种比较便利的方法可行,就是把要插入的数据以xml的形式,传入到存储过程中。

    推荐文章
      热点阅读