全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Sql 解析XML 解决方案1. 1、XML 为数据传入的XML格式2. root 为根目录3. 为对应需要插入的表,详见一对多或者多对多的xml格式4. 多对多是 为该条数据对应的从表的唯一标识,可以为其他名称的字段。如:1 15. 注意案例存储过程只定义了2个参数,可以根据自己的具体需求增加参数。一、 对单表(单条或者多条)的操作。declare XML xmlset XML=N 1test1 2test2 Insert into Temp(ID,Name) select S.value(ID)1,int) as ID,S.value(name)1,nvarchar) as name,from XML.nodes(/root/A) T(S)注意:A 为表名 ID,Name为此表对应的字段名二、 对多表(一对多)的操作declare CustomerID int declare XML xmlset XML=N 深圳大展116 2626 Insert into Customer(CustomerName,CustomerTypeID) select S.value(CustomerName)1,nvarchar) as CustomerName,S.value(CustomerTypeID)1,int) as CustomerTypeIDfrom XML.nodes(/root/Customer) T(S) set CustomerID =IDENTITY insert into CustomerBranch(CustomerID,AreaID,BranchID) select CustomerID , S.value(AreaID)1,int) as AreaID,S.value(BranchID)1,int) as BranchIDfrom XML.nodes(/root/CustomerBranch) T(S)三、 对多表(多对多)的操作declare CustomerID int declare Count intdeclare Error intdeclare XML xmlset XML=N 1深圳大展116 2艾默生116126246223 select Count =MAX(RowNumber)from ( select ROW_NUMBER() OVER (ORDER BY S.value(ID)1,int) ) AS RowNumber from XML.nodes(/root/Customer) T(S) as m while(Count0)begininsert into Customer(CustomerName,CustomerTypeID) select CustomerName,CustomerTypeIDfrom (select ROW_NUMBER() OVER (ORDER BY S.value(ID)1,int) desc ) AS RowNumber,S.value(CustomerName)1,nvarchar(200) as CustomerName,S.value(CustomerTypeID)1,int) as CustomerTypeIDfrom XML.nodes(/root/Customer) T(S) ) as m where RowNumber=Countset CustomerID=IDENTITY insert into CustomerBranch(CustomerID,AreaID,BranchID) select CustomerID , S.value(AreaID)1,int) as AreaID,S.value(BranchID)1,int) as BranchIDfrom XML.nodes(/root/CustomerBranch) T(S) where S.value(ID)1,int) =( select ID from ( select ROW_NUMBER() OVER (ORDER BY S.value(ID)1,int) desc ) AS RowNumber,S.value(ID)1,int) as ID from XML.nodes(/root/Customer) T(S) ) as m where RowNumber=Count)set Count=Count-1end四、 批量更新数据declare XML xmlset XML=N1大客户_TestXML22大客户_TestXML1 update Customer set CustomerName =m.value(CustomerName)1,nvarchar(200)from XML.nodes(/root/Customer) T(m)where CustomerID=m.value(CustomerID)1,int) 五、 具体存储过程案例(一对多或者多对多的根据案例代码放入到对应的事务即可)-测试存储过程ALTER PROCEDURE dbo.AddXML(xmlstr XML,ProcMessageCode int output )ASBEGINset nocount on set xact_abort on -定义中间变量 declare error int -设置初始值 set error = 0 -开始事务处理 begin tran tranAddXML insert into tt select S.value(ID)1,int) as ID, S.value(name)1,nvarchar(10) as name, S.value(age)1,int) as age from xmlstr.nodes(/root/tt) T(S) -记录错误 set error = error + ERROR if error 0 begin -回滚事务 rollback tran tranAddXML -返回保存失败 set ProcMessageCode =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京通州区教委所属事业单位面向应届毕业生招聘229人笔试考试参考题库及答案解析
- 2025广东佛山市龙卷风研究中心招聘科研人员1人笔试考试备考试题及答案解析
- 2025南斗六星技术有限公司中层管理岗位招聘考试笔试参考题库附答案解析
- 2026年中国储备粮管理集团有限公司安徽分公司员工招聘55人笔试考试参考试题及答案解析
- 2025铁路上海12306旅客服务中心客户服务人员招聘考试笔试备考试题及答案解析
- 2025湖南永州道县中医医院招聘卫生技术人员2人考试笔试参考题库附答案解析
- 2025年郑州大学第五附属医院招聘工作人员72名考试笔试备考题库及答案解析
- 2026广东茂名高州市事业单位赴高校选聘急需紧缺人才43人笔试考试参考试题及答案解析
- 2025安徽黄山市祁门经济开发区投资有限责任公司招聘5人笔试考试参考题库及答案解析
- 2025山西医药学院招聘人事代理人员7人笔试考试备考题库及答案解析
- 2025年及未来5年中国卫生杀虫剂行业市场供需格局及行业前景展望报告
- 2025江西宜春市丰城高级技工学校招聘30人考试笔试备考试题及答案解析
- 2026-2031年中国山慈菇行业市场发展现状及投资前景预测报告
- 2025年国学经典知识竞赛题库及答案
- 原发性肝癌的课件
- 培训机构合作方案
- 2026 年国家公务员考试申论 20 大热点押题及解答
- 2025版AHA心肺复苏CPR与心血管急救ECC指南全文学习解读
- 供应链韧性的理论与实证研究
- 2025年时事政治知识点(1月-9月)
- 锅炉的运营管理制度
评论
0/150
提交评论