




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学科学实验操作流程与教案
- 智能物流系统功能需求分析
- 经典文学作品应用题解析合集
- 建筑施工现场安全文明管理计划
- 三年级语文教学设计与课堂活动范例
- 用人单位人力资源管理咨询服务创新创业项目商业计划书
- 老年人生活照料服务标准化企业制定与实施新质生产力项目商业计划书
- 小学科学测试题及解析模板
- 物流配送优化路径设计与分析
- 物业投诉处理流程指南
- 学校装饰装修工程施工方案
- 烟草证 申请书
- 屋面光伏工程施工组织设计
- 山体公园施工方案
- 奥赛利定临床使用
- DL-T 5876-2024 水工沥青混凝土应用酸性骨料技术规范
- 胆囊癌完整版本
- 【MOOC】数据库原理及应用-电子科技大学 中国大学慕课MOOC答案
- 节约集约建设用地标准 DG-TJ08-2422-2023
- 老年人体重管理策略研究
- 挂靠合同协议书版模板
评论
0/150
提交评论