ms sql server读取xml文件存储过程-sp_xml_preparedocument
最近要在存储过程中读取xml中节点的值,然后进行sql操作;
要使用到的系统存储过程如下:sp_xml_preparedocument
create procedure [dbo].[pro_Test_Readxml]
@sData ntext
as
--XML 定义变量 并 解析赋值
declare @xmldata_id int
exec sp_xml_preparedocument @xmldata_id output,@sData declare @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
begin
select '解析xml数据失败!'
return
end declare @iRecBegin varchar(6),@iRecEnd varchar(6),@sSql varchar(1000),@sSqlText varchar(3000)
if(@sRp <>'' and @sPage <> '')
begin
select @iRecBegin=@sRp * (@sPage -1)+1,@iRecEnd=@sRp * @sPage
end
else
begin
select @iRecBegin =1,@iRecEnd=20
end select @sSql = '',@sSqlText ='' if ISNULL(@sZjlx,'')<>''
begin
if @sZjlx =''
select @sSql =@sSql+''--sql
end if ISNULL(@sFlag,'')<>''
begin
begin
select @sSqlText =''+@sSql;---sql
end
--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 ntext
as
set nocount on declare @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
begin
select 'F' as RST ,'1.解析XML数据失败!' as MSG
return
end select * 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>'
ms sql server读取xml文件存储过程-sp_xml_preparedocument的更多相关文章
- MS SQL Server之光标、存储过程和触发器
光标 通常数据库操作被认为是以数据集为基础的操作,但是光标被用于以记录为单位来进行操作,来获取数据库中的数据的子集.光标一般用于过程化程序里的嵌入的SQL语句. 对光标的定义如下: DECLARE C ...
- 清理ms sql server 大日志文件数据
1.手动分离数据库: 2.手动删除日志文件: 3.重新生成日志文件: CREATE DATABASE FMIS0 ON (FILENAME = 'E:\FMIS0_DATA\FMIS0-Date') ...
- 使用SqlBulkCopy导入数据至MS SQL Server
原文:使用SqlBulkCopy导入数据至MS SQL Server Insus.NET一直使用表类型来数据入MS SQL Server.参考<存储过程参数为DataTable>http: ...
- MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加
微软的SQL Server 数据库最常用的有两种类型的文件: 1.主要数据文件,文件后缀一般是.MDF: 2.事务日志文件,文件后缀一般是.LDF. 用户数据表.视图.存储过程等等数据,都是存放在MD ...
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
- sql server 常用的系统存储过程
系统存储过程 说明 sp_databases 列出服务上的所有数据库 sp_helpdb 报告有关指定数据库或所有数据库的信息 sp_renamedb 更改数据库的名称 sp_tables 返回当 ...
- MS SQL SERVER 中的系统表
MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行. 2 syscomments 包含每 ...
- (火炬)MS SQL Server数据库案例教程
(火炬)MS SQL Server数据库案例教程 创建数据库: CREATE DATABASE TDB //数据库名称 ON ( NAME=TDB_dat,//逻辑文件名 在创建数据库完成之后语句中引 ...
随机推荐
- 3. ELMo算法原理解析
1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...
- 命名实体识别,使用pyltp提取文本中的地址
首先安装pyltp pytlp项目首页 单例类(第一次调用时加载模型) class Singleton(object): def __new__(cls, *args, **kwargs): if n ...
- ubuntu之视频转换(Avconv的使用)
1.安装 sudo apt-get install ffmpeg libav-tools 2.基本操作 avconv [options] [[infile options] -i infile] [[ ...
- rqalpha探究 1 setup.py
rqalpha是难得几个好的做量化交易的开源项目,不过由于自己python用的实在不多,看起来还是觉得很复杂. 因此准备抽取出框架,从最简单的搭建. 思路 从setup着手,看一下如何建立一个发布工程 ...
- 嵌入式开发之hi3519---进程线程间的同步和互斥,条件变量、信号了、互斥锁等
sem_post 最安全 sem 有序,会卡顿 阻塞 mutex 无序,不能同步 http://blog.chinaunix.net/uid-20671208-id-4935154.html ht ...
- vue返回上一页面如果没有上一页面返回首页
methods: { back(){ if (window.history.length <= 1) { this.$router.push({path:'/'}) return false } ...
- Javascript Base64加密解密代码
<script language="javascript" runat="server"> var keyStr = "ABCDEFGHI ...
- swagger netframework webapi
参考:https://blog.csdn.net/wjk343977868/article/details/47086137
- traff.sh
#!/bin/bash #网络监控 while [ "1" ] do eth=$1 RXpre=$(cat /proc/net/dev | grep $eth | tr : &qu ...
- iOS mac终端下的SQL语句
本文转载至 http://blog.csdn.net/majiakun1/article/details/41281801 我们都知道数据库的创建可以借助图形化的数据库工具软件,但也可以在Mac终端下 ...