用XML和SQL2000管理存储过程调用
为了实现这一目标的方法是将你的参数作为一个XML字符串,并分析XML检索到你需要的数据,然后继续执行你需要整合的功能。你不仅可以通过XML获得一些参数,但你也可以在创建XML封装多个DOM文档的查询我会给你一些例子来告诉你如何做到这一点,简要描述每个例子。
在这种情况下,为了更新在客户表字段的名称,我会通过几个参数。为了获得ID(身份列)和新名称领域,XML将解剖。我经过进程XML字符串是这样的:
3acme
股份有限公司.
要创建的存储字段如下所示:
创建程序update_customer(@ xmldatavarchar(8000))为
声明@ customeridint
声明@ customernamevarchar(50)
声明@ xmldata_idint
执行sp_xml_preparedocument @ @ xmldata_id输出数据,
选择CustomerID为CustomerID,@ CustomerName = {姓名}从
OPENXML(@ xmldata_id,' / /客户,2)和(customeridint,{姓名})
varchar(50))
执行sp_xml_removedocument @ xmldata_id
更新客户设置客户。{姓名} =空(@客,客户。{姓名})
在customer.tblid =CustomerID
该工艺首先声明我们将要使用的变量将保存相关信息。之后,DOM文档被打开,和手柄(手柄)返回的sp_xml_preparedocument调用的第一个参数。
这个调用中的第二个参数是新的DOM文档的XML源文件。这种处理是用来查询信息从DOM在OPENXML调用了,OPENXML调用中的第二个参数是一个父节点的XPath映射,其中包含的数据被执行。
第三个参数(2)表示该元素为中心的映射将被使用。该条款提供的数据集(数据集)的解剖数据格式,和sp_xml_removedocument称将删除该文档的源文件。
在下面的示例中,我将传递一系列用户ID来删除多个数据列:
一
二十三
它看起来如下所示。
..
执行sp_xml_preparedocument @ @ xml_id输出数据,
删除从顾客那里customer.tblid在(选择CustomerID从)
OPENXML(@ xmldata_id,' / /客户,2)和(customeridint))
..
这样,就不再需要创建冗长的SQL查询字符串来传入或调用ADO中的一个,这也消除了多次调用对网络流量的影响。
正如您所看到的,SQL 2000使整个过程变得更简单。记住,这种方法的缺点是,当SQL 2000执行XML任务时,将XML作为参数发送将被限制为8000个字符。
访问MSDN库可以获得更多的信息sp_xml_preparedocument OPENXML,和sp_xml_removedocument。