xml是什么⼊参格式存储过程_存储过程XML传参数
⼜⼀个xml作为存储过程参数的例⼦
2008/11/24 23:37
创建⼏个带不同参数的存储过程去完成同⼀样任务对我们来说⼀直以来都是⼀个负担。通过使⽤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]
网络上xml是什么意思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时,作
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论