中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 数据库区 -> MSSQL -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ACCESS · MSSQL
· Mysql · DB2
· ORACLE · SYBASE
· 其他相关
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· 使用XMLHTTP制作域名...
· ASP中存储过程调用的...
· 用XML和SQL 2000来管...
使用XML和SQL Server 2000管理存储过程调用
作者:佚名  来源:不详  发布时间:2006-5-9 16:48:17  发布人:chinazhan

 减小字体 增大字体

创建几个带不同参数的存储过程去完成同一样任务对我们来说一直以来都是一个负担。通过使用XML字符串传递参数给你的存储过程可以简化这个任务,从而使设计COM组件变得更加简单。
达到这个目标的方法是将你的参数作为一个XML字符串传入,然后解析XML以取得你需要的数据,最后继续完成你需要实现的功能。你不但可以从XML中获得参数,你还可以在由XML创建的DOM文档运行查询语句,完成几个存储过程调用。我将给出一些例子来说明怎样做,每个例子都有一个简单的解释。 在这个例子中,我将传递一些参数用以更新Customer表的name域。XML被解析以获得customerid(标识列)和新的name。我传给过程的XML字符串如下:
<root><Customer><customerid>3</customerid><name>Acme
Inc.</name></Customer></root>
创建的存储过程如下:
CREATE PROCEDURE update_Customer (@xmldata varchar(8000)) AS
DECLARE @customerid int
DECLARE @customername varchar(50)
DECLARE @xmldata_id int EXEC sp_xml_preparedocument @xmldata_id OUTPUT, @xmldata, '' SELECT @customerid = customerid, @customername = [name] FROM
OPENXML(@xmldata_id, '//Customer', 2) WITH (customerid int, [name]
varchar(50)) EXEC sp_xml_removedocument @xmldata_id UPDATE Customer SET Customer.[name] = ISNULL(@customername, Customer.[name])
WHERE Customer.tblID = @customerid 这个过程首先声明我们用于存储相关信息的变量。之后,打开DOM文档,调用过程sp_xml_preparedocument,其第一个参数返回一个“句柄”。 这个过程调用的第二个参数是新DOM文档的XML源。第一个参数返回的“句柄”在OPENXML调用中用于查询DOM文档。OPENXML调用的第二个参数是一个映射到包含要提取数据的父节点的扩展路径。 第三个参数(2)指明使用以元素为中心的映射。WITH子句为被解析的数据提供行集合格式,然后sp_xml_removedocument调用删除DOM文档资源。 在下面的另一个例子中,我将会根据传入的一组customer ID删除几行数据。使用的XML字符串如下:
<root><Customer><customerid>1</customerid></Customer><Customer><customerid>
2</customerid></Customer><Customer><customerid>3</customerid></Customer>
</root> 使用的存储过程如下:
. . .
EXEC sp_xml_preparedocument @xml_id OUTPUT, @xmldata, ''
DELETE FROM Customer WHERE Customer.tblID IN (SELECT customerid FROM
OPENXML (@xmldata_id, '//Customer', 2) WITH (customerid int))
. . . 这个存储过程的使用避免了建立一个长SQL查询字符串来通过ADO传递,或者多次调用同一个存储过程。也避免了由于多次调用引起的网络拥挤。
正如你看到的,使用Microsoft SQL Server 2000可以使一些事情变得比较简单。但记住是当你在SQL Server 2000中使用XML时,作为参数传入的XML不能超过8000个字符。就像常说的,不要过高的看待一件好事的好处。
参考MSDN库取得更多关于OPENXML, sp_xml_preparedocument 和 sp_xml_removedocument 的信息。    asp">存储过程asp?tags=数据库">数据库
 
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .