国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

使用SQL Server 將現有代碼作為Web 服務提供

瀏覽:105日期:2023-10-28 18:31:39
摘要:本文介紹了如何使用 Microsoft SQL Server 2000 的 XML 功能將現有的存儲過程代碼作為 Web 服務提供。 目錄簡介 SQL Server 2000 中的現有代碼 總結簡介Microsoft&reg; SQL Server&#8482; 2000 的 XML 功能可以簡化將現有代碼作為 Web 服務提供的任務。本文集中討論了傳入和傳出 Transact SQL 代碼的數據與 XML 消息(在 Web 服務客戶機和服務器之間使用)之間的轉換。評估現有代碼是否適合于作為 Web 服務提供時,本文討論的數據轉換問題并不是唯一需要考慮的問題。應考慮的其它因素包括狀態模型、返回的數據大小、如何表示已經成功、如何返回錯誤信息、安全模型(包括訪問控制、身份驗證和加密)、執行模型(同步或異步)、如何分發代碼,以及事務模型(COM+ 事務或聲明事務),等等。這些問題將在即將發表的體系結構主題(英文)文章中進行討論。SQL Server 2000 中的現有代碼 SQL Server 2000 的 XML 功能簡化了將現有 Transact SQL 代碼作為 Web 服務提供的過程。這依賴于 SQL Server 2000 中的兩項 XML 功能:對 Transact SQL 的擴展可將關系型數據轉換為 XML,并且可以對傳入的 XML 進行語法分析。 利用 ISAPI 模板功能,可將傳入的 HTTP 請求應用于 Transact SQL 代碼,并且可以使用 XSL 樣式表對傳出的 XML 進行轉換。只要可以使用 FORXML 子句“選定”數據,SQL Server 就可以將 XML 返回到 XML 模板。 SQL Server 2000 XML 模板SQL Server 2000 XML 模板以透明方式執行以下任務:對傳入的 HTTP 請求進行解碼 將參數應用于 Transact SQL 查詢 執行查詢 使用 XSL 轉換傳出的 XML 讀數據以下示例執行 ISAPI 模板中指定的 Transact SQL。如果必要,可將 HTTP 請求傳遞到 Transact SQL 代碼,并由該代碼進行語法分析。根據模板中指定的 .xsl 文件,返回的 XML 將被轉換為 SOAP 并返回給 Web 服務的客戶:<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" sql:xsl="BDAdotNetWebService3Example1.xsl"><Orders><sql:query>Exec GetOrdersXML</sql:query></Orders></ROOT>以下是模板中引用的 XSL 樣式表,它將存儲過程中的 XML 轉換為 SOAP:<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:m="Some-URI"><xsl:template match="/"><SOAP-ENV:Envelope><SOAP-ENV:Body><m:BDAdotNetWebService3Example1Response ><xsl:copy-of select="http://Orders"/></m:BDAdotNetWebService3Example1Response></SOAP-ENV:Body></SOAP-ENV:Envelope></xsl:template></xsl:stylesheet>最后,以下存儲過程代碼在 Transact SQL SELECT 語句中使用 FOR XML EXPLICIT 子句來返回 XML。“訂單”和“訂單詳細信息”從單獨的表中選擇,然后合并到 XML 層次中:/* 訂單是父 XML 元素 */Select 1 as Tag, NULL as Parent,Orders.OrderId AS [Order!1!OrderId],Orders.OrderStatus AS [Order!1!OrderStatus],Orders.OrderDate AS [Order!1!OrderDate],Orders.SubTotal AS [Order!1!SubTotal],Orders.Tax AS [Order!1!Tax],Orders.ShippingHandling AS [Order!1!ShippingHandling],Orders.ShipToName AS [Order!1!ShipToName],Orders.ShipToAddressId AS [Order!1!ShipToAddressId],NULL AS [OrderDetail!2!OrderDetailId],NULL AS [OrderDetail!2!OrderId],NULL AS [OrderDetail!2!ItemId],NULL AS [OrderDetail!2!UnitPrice],NULL AS [OrderDetail!2!Quantity]from Orders UNION ALL/* 訂單詳細信息是子 XML 元素 */select 2 as tag, 1 as parent,Orders.OrderId AS [Order!1!OrderId],NULL AS [Order!1!OrderStatus],NULL AS [Order!1!OrderDate],NULL AS [Order!1!SubTotal],NULL AS [Order!1!Tax],NULL AS [Order!1!ShippingHandling],NULL AS [Order!1!ShipToName],NULL AS [Order!1!ShipToAddressId],OrderDetails.OrderDetailId AS [OrderDetail!2!OrderDetailId],OrderDetails.OrderId AS [OrderDetail!2!OrderId],OrderDetails.ItemId AS [OrderDetail!2!ItemId],OrderDetails.UnitPrice AS [OrderDetail!2!UnitPrice],OrderDetails.Quantity AS [OrderDetail!2!Quantity]from Orders, OrderDetailswhere Orders.OrderId = OrderDetails.OrderIdORDER BY [Order!1!OrderId],[OrderDetail!2!OrderDetailId]For XML EXPLICIT寫數據以下示例中,通過 HTTP 請求提供表示層次行數據的 XML,然后將其傳遞到 ISAPI 模板中指定的 Transact SQL 代碼。在存儲過程中對 XML 進行語法分析,并進行相應的寫入操作:Create Procedure InsertOrder @Order NVARCHAR(4000) = NULL,@OrderId int Output-DECLARE @hDoc INTDECLARE @PKId INT BEGIN TRANSACTION/* 將 XML 載入文檔以進行分析 */ EXEC sp_xml_preparedocument @hDoc OUTPUT, @Order/* 插入訂單標頭 */ INSERT Orders(CustomerId,OrderDate,ShipToName,ShipToAddressId,OrderStatus)SELECT * FROM OPENXML(@hDoc, '/NewDataSet/Orders')WITH ( CustomerId int 'CustomerId',OrderDate Datetime 'OrderDate',ShipToName nvarchar(40) 'ShipToName',ShipToAddressId int 'ShipToAddressId',OrderStatus int 'OrderStatus') SELECT @PKId = @@IDENTITY/* 插入訂單詳細信息 */ INSERT OrderDetails (OrderId,ItemId,UnitPrice,Quantity) SELECT @PKId as OrderId, ItemId, UnitPrice, QuantityFROM OPENXML(@hDoc, '/NewDataSet/Details') WITH ( ItemId int 'ItemId',UnitPrice money 'UnitPrice',Quantity int 'Quantity')/* 指定輸出參數的值 */Select @OrderId = @PKId COMMIT TRANSACTION/* 清除 XML 文檔 */ EXEC sp_xml_removedocument @hDoc 總結本文以及附帶的示例介紹了有關數據轉換的信息。通過數據轉換,可以使用 SQL Server 2000 的 XML 功能將現有 Transact SQL 代碼作為 Web 服務提供。本文集中討論了傳入和傳出 Transact SQL 代碼的數據與 SOAP 消息(在 Web 服務客戶機和服務器之間使用)之間的轉換。這些解決方案的性能各異,并且受所傳遞的數據大小影響。在本系列后面的文章中,我們將對這些實現方法進行比較。評估現有代碼是否適合作為 Web 服務時,接口只不過是應當考慮的諸多因素之一。應考慮的其它因素包括安全性(包括授權、身份驗證和加密)、事務模型、狀態模型、返回錯誤和結果的方式,以及代碼是同步還是異步執行,等等。
標簽: Sql Server 數據庫
主站蜘蛛池模板: 国产精品综合一区二区三区 | 手机在线观看黄色网址 | 韩国毛片在线 | 久久精品全国免费观看国产 | 亚洲综合自拍 | 国产免费黄视频 | 日韩精品在线看 | 国产一区二区在线观看视频 | 国产中文字幕在线播放 | 永久免费不卡在线观看黄网站 | 久久综合99re88久久爱 | 真实一级一级一片免费视频 | 色爱综合网| 国产精选在线播放 | 国产50页| 亚洲 欧美 成人日韩 | 欧美在线一级片 | 91资源在线播放 | 欧美一区二区三区在线 | 欧美另类丝袜 | 久久国产精品亚洲 | 久久国产免费一区二区三区 | 久久91精品国产91久久 | 成人午夜爽爽爽免费视频 | 国产aⅴ精品一区二区三区久久 | 五月天激激婷婷大综合蜜芽 | 亚洲福利精品一区二区三区 | 久久免费视频99 | 欧美另类精品一区二区三区 | 正能量www正能量免费网站 | 99精品免费观看 | 99热国产免费 | 看全黄男人和女人视频 | 亚洲精品一区二区三区在 | 国产伦精品一区二区三区免费 | 亚洲在线视频播放 | 无毛片| 久久国产欧美日韩精品免费 | 蜜桃日本一道无卡不码高清 | 国产综合视频在线观看一区 | 欧美不卡一区 |