亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用XML和SQL 2000來管理存儲過程調用的方法

發布時間:2020-10-19 15:27:13 來源:億速云 閱讀:158 作者:小新 欄目:編程語言

用XML和SQL 2000來管理存儲過程調用的方法?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

創建多個帶有不同參數的存儲過程(stored PRocedure)來完成同一個任務總是一個很大的負擔。利用xml字符串向你的存儲過程發送參數就能夠簡化這個任務;這也讓COM組件的設計更簡單。

實現這個目的的方法是將你的參數作為一個XML字符串來傳遞,并剖析XML來取回你所需要的數據,然后繼續實現你所需要集成的功能。你不僅可以通過XML來獲取一些參數,你還可以對XML所創建的DOM文檔運行查詢,以此來封裝多個存儲過程。我會提供一些例子,告訴你如果實現這個目的,并簡要地描述每個例子。

在本例里,為了更新一個Customer表格里的姓名字段,我會傳遞幾個參數。為了獲得customerid(身份列)和新的姓名字段,XML會被剖析。我傳遞給過程的XML字串就像下面的這樣:

<root><Customer><customerid>3</customerid><name>Acme
 Inc.</name></Customer></root>

要被創建的存儲字段就像下面的這樣:

CREATE PROCEDURE update_Customer (@xmldatavarchar(8000)) ASDECLARE @customeridintDECLARE @customernamevarchar(50)DECLARE @xmldata_idint
EXEC sp_xml_preparedocument @xmldata_id OUTPUT, @xmldata, ''
SELECT @customerid = customerid, @customername = [name] FROM OPENXML(@xmldata_id, '//Customer', 2) WITH (customeridint, [name] varchar(50))
EXEC sp_xml_removedocument @xmldata_id
UPDATE Customer SET Customer.[name] = ISNULL(@customername, Customer.[name])WHERE Customer.tblID = @customerid

這個過程首先就聲明我們將要用到的變量會保存相關信息。在此之后,DOM文檔被打開,一個“句柄(handle)”會被返回到sp_xml_preparedocument調用的第一參數里。

這個調用的第二個參數是用于新DOM文檔的XML源文件。這個“句柄”是在進行OPENXML調用的時候用來從DOM里查詢信息的。OPENXML調用的第二個參數是父節點的一個Xpath映射,這些父節點包含有要被執行的數據。


第三個參數(2)指明,以元素為中心的映射會被使用。WITH子句為被剖析的數據提供了數據列集(rowset)格式,sp_xml_removedocument調用會刪掉DOM文檔的源文件。

在下面這個例子里,我會傳遞一系列用戶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 (customeridint))
. . .


有了這個存儲過程就不再需要創建一個冗長的SQL查詢字符串,用以在ADO里傳遞或者多次調用一個存儲過程了。這也會消除多次調用對網絡流量所造成的影響。

正如你能夠看到的,微軟的SQL 2000讓整個過程稍稍簡單了一點。要記住,這一方法的不足之處在于:在SQL 2000進行XML任務的時候,將XML作為一個參數發送會被限制到8,000字符。和以往一樣,不要忽視了精心策劃的好處。

訪問MSDN庫能夠獲得更多關于OPENXML、sp_xml_preparedocument以及sp_xml_removedocument的信息。

感謝各位的閱讀!看完上述內容,你們對用XML和SQL 2000來管理存儲過程調用的方法大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新宁县| 甘南县| 边坝县| 绥中县| 五常市| 宁德市| 叶城县| 广饶县| 环江| 松溪县| 闻喜县| 尼玛县| 天门市| 应用必备| 孝感市| 武山县| 温州市| 吴忠市| 黎城县| 汉源县| 洛川县| 黔东| 新河县| 辽宁省| 交口县| 宁德市| 资中县| 陆川县| 关岭| 黄骅市| 岚皋县| 南召县| 宿松县| 黄大仙区| 汉阴县| 台东市| 稷山县| 鹿邑县| 西乌珠穆沁旗| 麦盖提县| 什邡市|