最近要在存储过程中读取xml中节点的值,然后进行sql操作;

要使用到的系统存储过程如下:sp_xml_preparedocument

create procedure [dbo].[pro_Test_Readxml] @sData ntextas
--XML 定义变量 并 解析赋值
declare @xmldata_id int
exec sp_xml_preparedocument @xmldata_id output,@sDatadeclare @sPage int --页码
select @sPage=page  from openxml(@xmldata_id,'/DataTable/diffgr/NewDataSet/PARAMS',2)with (page int)declare @sRp int --每页记录数
select @sRp =rp from openxml(@xmldata_id,'/DataTable/diffgr/NewDataSet/PARAMS',2) with (rp int)declare @sZjlx varchar(10)--证件类型
select @sZjlx =zjlb from openxml(@xmldata_id,'/DataTable/diffgr/NewDataSet/PARAMS',2) with (zjlb varchar(10))declare @sZjhm varchar(50) --证件号码
select @sZjhm =zjhm from openxml(@xmldata_id,'/DataTable/diffgr/NewDataSet/PARAMS',2) with (zjhm varchar(50))declare @sFlag varchar(50) --标志
select @sFlag =flag from openxml(@xmldata_id,'/DataTable/diffgr/NewDataSet/PARAMS',2) with (flag varchar(50))exec sp_xml_removedocument @xmldata_id
if @@ERROR <> 0
beginselect '解析xml数据失败!'return
enddeclare @iRecBegin varchar(6),@iRecEnd varchar(6),@sSql varchar(1000),@sSqlText varchar(3000)
if(@sRp <>'' and @sPage <> '')
beginselect @iRecBegin=@sRp * (@sPage -1)+1,@iRecEnd=@sRp * @sPage
end
else
beginselect @iRecBegin =1,@iRecEnd=20
endselect @sSql = '',@sSqlText =''if ISNULL(@sZjlx,'')<>''
beginif @sZjlx ='99'select @sSql =@sSql+''--sql
endif ISNULL(@sFlag,'')<>''
beginbeginselect @sSqlText =''+@sSql;---sqlend
--print @sSqlText
EXEC(@sSqlText)GO

执行如下:

EXEC pro_Test_Readxml '<DataTable><diffgr><NewDataSet><PARAMS><page>1</page><rp>10</rp><zjlb>99</zjlb><zjhm>31011600101000120141211155030551</zjhm><falg>1</flag></PARAMS></NewDataSet></diffgr></DataTable>'

一个完整的例子:

create procedure [dbo].[usp_Jb_Zlzfx_Gwsc]@sData ntextas
set nocount ondeclare @idoc int
exec sp_xml_preparedocument @idoc output ,@sData
select *  into #TMP_PARAS
from OpenXML(@idoc,'PARAS/ITEM',2)
with(XM varchar(50),ZZSCFS varchar(30),DCYSXM varchar(50),DCRQ varchar(10),INFO varchar(1000)
)
exec sp_xml_removedocument @idoc
if @@ERROR <> 0
beginselect 'F' as RST ,'1.解析XML数据失败!' as MSGreturn
endselect * FROM #TMP_PARAS

执行:

exec usp_Jb_Zlzfx_Gwsc '<PARAS><ITEM><XM>张三</XM><ZZSCFS>1</ZZSCFS><DCYSXM>魏飞</DCYSXM><DCRQ>2016-12-06</DCRQ><INFO>text</INFO></ITEM></PARAS>'

转载于:https://www.cnblogs.com/hoaprox/p/6004591.html

ms sql server读取xml文件存储过程-sp_xml_preparedocument相关推荐

  1. 公司招聘软件研发程序员的一道考题--MS SQL Server数据库数据文件页面头部结构...

    有一次在招聘C++程序员时,出的一道考题,内容其实就是MS SQL Server数据库数据文件页面头部结构,如下: 有个file.a文件,这个文件以16sec[sec是扇区,每个sec包含512个By ...

  2. MS SQL SERVER 读取数据库中每个表的描述/注释以及表中字段/列的字段名,字段类型,字段描述/注释/说明等信息...

    SELECT 表名 = CASE WHEN a.colorder=1 THEN d.nameELSE ''END,表说明 = CASE WHEN a.colorder=1 THEN ISNULL(f. ...

  3. iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)【转】

    iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post). Oracle设置 Xml代码   <!-- O ...

  4. ibatis中主键自动增长(Oracle,Ms sql server ,mysql)

    http://morning2008.iteye.com/blog/611528 iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pr ...

  5. SQL Server中读取XML文件的简单做法

    SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦.本文介绍在SQL Server中读取XML文件的简单做法. ...

  6. [转帖]C#执行SQL脚本,读取XML文件

    [转帖]C#执行SQL脚本,读取XML文件 需要添加如下引用: using System.IO; using System.Data.SqlClient; using System.Collectio ...

  7. 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...

    作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...

  8. 重装MS SQL Server 2000前必须彻底删除原安装文件!

    今天重装MS SQL Server 2000,装了几次都提示出错,查看事件,显示 driver={sql server};server=harry;UID=sa;PWD=;database=maste ...

  9. PHP(2):PHP读取MS Sql Server 2014数据库数据

    前面使用VBS将Excel数据写入到了Ms Sql Server 2014的数据库,现在要将记录显示出来,本来打算用IIS+ASP.net,可是9月份安装好Apache+PHP后一直没有写过PHP代码 ...

最新文章

  1. 初中信息技术说课python_第一单元 走进Python 编程世界
  2. 基于FPGA的HDB3数字编码器设计
  3. 李永乐线性代数2020年基础课手写笔记汇总
  4. libsvm 训练后,模型参数详解
  5. 服务器新建项目,Perfect(swift) 搭建服务器之新建项目
  6. Android 实用开源控件
  7. .NET Core Web APi大文件分片上传研究
  8. JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。...
  9. P4271 [USACO18FEB]New Barns
  10. 08TensorFlow2.0基础--8.2创建张量
  11. android.support.v4.app.Fragment和android.app.Fragment区别
  12. EditPlus Version 3 价格 代理商 销售价格 正版软件价格
  13. IDAutomation的条形码字体和工具集TrueType Font Package
  14. 一级导航,二级导航,三级导航介绍
  15. 从朋友测试ISAC和SILK效果到二者理论比较
  16. 程序员朋友们,请答应我?别再去东南亚写代码了好么?
  17. 微信小游戏获取排行榜
  18. 外贸软件进出口内贸综合型管理解决方案
  19. 理解DC中的link_library与target_library
  20. Java-Collection集合和Map集合总结

热门文章

  1. python高级编程第3版导图_流弊!一张图完美解释 Python 3 全部用法
  2. pip安装pycurl报错
  3. 并发控制——封锁、活锁和死锁
  4. 介绍一下逻辑地址和物理地址
  5. Java+springboot+Mysql 大学生综合素质测评系统51615-计算机毕业设计(赠源码)
  6. 山东财经大学新生赛暨天梯赛选拔赛 F.简单排序(思维)
  7. Java常见面试题:类的加载过程
  8. 利用BP网络实现非线性函数映射(基于matlab工具箱)
  9. HTML中表单的各类按钮(新手)
  10. 关于 Office的Error 1935(HRESULT:0x8007054F)的修复