将xml作为输入参数传递给存储过程
1 查看存储过程的方式
exec sp_helptext 'GetTrackingFeedLogByMaxId' select definition from sys.sql_modules
where object_id=(OBJECT_ID(N'GetTrackingFeedLogByMaxId'))
2 在调用有输入参数的存储过程时必须包含参数,除非参数有默认值
3 系统存储过程sp_xml_preparedocument和OPENXML函数来操作传入的xml文档
DECLARE @XMLDocHandle int declare @xml varchar()='<ROOT>
<CurrencyList FromCurrencyCode="USD" ToCurrencyCode="AUD"></CurrencyList>
<CurrencyList FromCurrencyCode="USD" ToCurrencyCode="EUR"></CurrencyList>
<CurrencyList FromCurrencyCode="USD" ToCurrencyCode="GBP"></CurrencyList>
<CurrencyList FromCurrencyCode="USD" ToCurrencyCode="MXN"></CurrencyList>
</ROOT>
' execute sp_xml_preparedocument @XMLDocHandle output,@xml SELECT FromCurrencyCode,ToCurrencyCode
FROM OPENXML(@XMLDocHandle,'/ROOT/CurrencyList',)
WITH
(
FromCurrencyCode char(),
ToCurrencyCode char()
)
注意变量必须定义为@XMLDocHandle变量
执行效果如下

3 xml作为存储过程的参数示例
--将xml作为存储过程的输入参数
create procedure getCurrentRatesXML
@XMLList varchar(),
@CurrencyRateDate datetime AS
declare @XMLDocHandle int
declare @CurrencyCodeTable table
(
FromCurrencyCode char(),
ToCurrencyCode char()
) --准备xml文档
execute sp_xml_preparedocument @XMLDocHandle output,@XMLList; INSERT INTO @CurrencyCodeTable(FromCurrencyCode,ToCurrencyCode)
SELECT FromCurrencyCode,ToCurrencyCode
FROM OPENXML(@XMLDocHandle,'/ROOT/CurrencyList',)
WITH
(
FromCurrencyCode char(),
ToCurrencyCode char()
); SELECT *
FROM Sales.CurrencyRate cr
JOIN @CurrencyCodeTable TVP
ON cr.FromCurrencyCode=TVP.FromCurrencyCode
AND cr.ToCurrencyCode=TVP.ToCurrencyCode
WHERE CurrencyRateDate=@CurrencyRateDate; --移除文档
execute sp_xml_removedocument @XMLDocHandle;
go
将xml作为输入参数传递给存储过程的更多相关文章
- XML中输入特殊符号
XML中输入特殊符号 周银辉 特殊符号比如 ™, 要在xml中使用的话, 其实和html的转码是一样的, 参考下面这个表(使用十进制编码那一列) 特殊符号 命名实体 十进制编码 特殊符号 命名实体 十 ...
- 使用动态SQL处理table_name作为输入参数的存储过程(MySQL)
关于mysql如何创建和使用存储过程,参考笔记<MySQL存储过程和函数创建>以及官网:https://dev.mysql.com/doc/refman/5.7/en/create-pro ...
- 通过Web API调用Action时各种类型输入参数传递值的方法
本人微信公众号:微软动态CRM专家罗勇 ,回复280或者20180906可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . Dy ...
- oracle执行带输入输入参数的存储过程
declare a1 ); a2 ); begin PKG_INPATIENT.prc_autojf('Y', a1, a2); end;
- SQL Server :Stored procedures存储过程初级篇
对于SQL Server,我是个拿来主义.很多底层的原理并不了解,就直接模仿拿着来用了,到了报错的时候,才去找原因进而逐步深入底层.我想,是每一次的报错,逼着我一点点进步的吧. 近期由于项目的原因,我 ...
- 笔记:MyBatis Mapper XML文件详解 - 映射和参数
MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...
- c#中如何执行存储过程
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- SQL Server XML数据解析
--5.读取XML --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <In ...
- ORACLE——存储过程
存储过程procedure 被内容来自<oracle从入门到精通——明日科技>一书 存储过程是一种命名的PL/SQL程序快,存储过程被保存在数据库中,它不可以被SQL语句直接执行或调用,只 ...
随机推荐
- URL编码和解码
1. 为什么需要编码 当数据不利于处理.存储的时候,就需要对它们进行编码.如对字符进行编码是因为自然语言中的字符不利于计算机处理和存储.对图片信息.视频信息.声音信息进行压缩.优化,将其“格式化”,是 ...
- MOCK服务小结
前言: 说到mock,大家会想到单测中的mock,测试同学会想到httpmock服务等. mock的作用:程序运行过程中,设定过滤规则及返回值,来满足固定的数据解析,解决不容易构造或者获取的数据对象. ...
- VBA锁定指定单元格
Then .Range("AF4").Value = pjno .Range("A1:AH56").Locked = False .Range("F6 ...
- MongoDB in Action (MongoDB 实战).pdf
http://www.open-open.com/doc/view/691d4d2232ce4b30b14c6b218fff4be8
- Java NIO学习笔记九 NIO与IO对比
Java NIO与IO Java nio 和io 到底有什么区别,以及什么时候使用nio和io,本文做一个比较. Java NIO和IO之间的主要区别 下表总结了Java NIO和IO之间的主要区别, ...
- ssm整合的springmvc.xml的配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- python解析模块(ConfigParser)使用方法
python解析模块(ConfigParser)使用方法 很多软件都有配置文件,今天介绍一下python ConfigParser模块解析配置文件的使用方法 测试配置文件test.conf内容如下: ...
- ElasticSearch——分词
前言: 最近在使用elasticSearch中发现有些数据查不出来,于是研究了一下,发现是分词导致的,现梳理并总结一下. ElasticSearch 5.0以后,string类型有重大变更,移除了st ...
- weblogic12.1.3部署应用程序
weblogic12.1.3部署应用程序请参照:https://www.cnblogs.com/xdp-gacl/p/4143413.html
- VMware中为CentOS配置静态ip并可访问网络-windows下的VMware
首先确保虚拟网卡(VMware Network Adapter VMnet8)是开启的,然后在windows的命令行里输入“ipconfig /all”,找到VMware Network Adapte ...