人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

運用XML與SQL Server 2000管理存儲過程調用

運用XML與SQL Server 2000管理存儲過程調用

更新時間:2022-06-25 文章作者:未知 信息來源:網絡 閱讀次數:

創建幾個帶不同參數的存儲過程去完成同一樣任務對我們來說一直以來都是一個負擔。通過使用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_preparedocumentsp_xml_removedocument 的信息。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 始兴县| 徐州市| 巨鹿县| 宁夏| 玛曲县| 资源县| 丰都县| 个旧市| 大理市| 育儿| 皋兰县| 施甸县| 获嘉县| 大丰市| 姚安县| 通州市| 巫溪县| 伊宁市| 南丰县| 陕西省| 长岛县| 九寨沟县| 三门县| 南部县| 杂多县| 浮梁县| 长顺县| 济源市| 夹江县| 湟中县| 新津县| 台山市| 龙江县| 怀化市| 贵港市| 白玉县| 宁都县| 武清区| 岚皋县| 桂东县| 芷江|