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

您的位置:首頁技術(shù)文章
文章詳情頁

使用SQL Server 將現(xiàn)有代碼作為Web 服務(wù)提供

瀏覽:107日期:2023-10-28 18:31:39
摘要:本文介紹了如何使用 Microsoft SQL Server 2000 的 XML 功能將現(xiàn)有的存儲過程代碼作為 Web 服務(wù)提供。 目錄簡介 SQL Server 2000 中的現(xiàn)有代碼 總結(jié)簡介Microsoft&reg; SQL Server&#8482; 2000 的 XML 功能可以簡化將現(xiàn)有代碼作為 Web 服務(wù)提供的任務(wù)。本文集中討論了傳入和傳出 Transact SQL 代碼的數(shù)據(jù)與 XML 消息(在 Web 服務(wù)客戶機(jī)和服務(wù)器之間使用)之間的轉(zhuǎn)換。評估現(xiàn)有代碼是否適合于作為 Web 服務(wù)提供時,本文討論的數(shù)據(jù)轉(zhuǎn)換問題并不是唯一需要考慮的問題。應(yīng)考慮的其它因素包括狀態(tài)模型、返回的數(shù)據(jù)大小、如何表示已經(jīng)成功、如何返回錯誤信息、安全模型(包括訪問控制、身份驗(yàn)證和加密)、執(zhí)行模型(同步或異步)、如何分發(fā)代碼,以及事務(wù)模型(COM+ 事務(wù)或聲明事務(wù)),等等。這些問題將在即將發(fā)表的體系結(jié)構(gòu)主題(英文)文章中進(jìn)行討論。SQL Server 2000 中的現(xiàn)有代碼 SQL Server 2000 的 XML 功能簡化了將現(xiàn)有 Transact SQL 代碼作為 Web 服務(wù)提供的過程。這依賴于 SQL Server 2000 中的兩項(xiàng) XML 功能:對 Transact SQL 的擴(kuò)展可將關(guān)系型數(shù)據(jù)轉(zhuǎn)換為 XML,并且可以對傳入的 XML 進(jìn)行語法分析。 利用 ISAPI 模板功能,可將傳入的 HTTP 請求應(yīng)用于 Transact SQL 代碼,并且可以使用 XSL 樣式表對傳出的 XML 進(jìn)行轉(zhuǎn)換。只要可以使用 FORXML 子句“選定”數(shù)據(jù),SQL Server 就可以將 XML 返回到 XML 模板。 SQL Server 2000 XML 模板SQL Server 2000 XML 模板以透明方式執(zhí)行以下任務(wù):對傳入的 HTTP 請求進(jìn)行解碼 將參數(shù)應(yīng)用于 Transact SQL 查詢 執(zhí)行查詢 使用 XSL 轉(zhuǎn)換傳出的 XML 讀數(shù)據(jù)以下示例執(zhí)行 ISAPI 模板中指定的 Transact SQL。如果必要,可將 HTTP 請求傳遞到 Transact SQL 代碼,并由該代碼進(jìn)行語法分析。根據(jù)模板中指定的 .xsl 文件,返回的 XML 將被轉(zhuǎn)換為 SOAP 并返回給 Web 服務(wù)的客戶:<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" sql:xsl="BDAdotNetWebService3Example1.xsl"><Orders><sql:query>Exec GetOrdersXML</sql:query></Orders></ROOT>以下是模板中引用的 XSL 樣式表,它將存儲過程中的 XML 轉(zhuǎn)換為 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。“訂單”和“訂單詳細(xì)信息”從單獨(dú)的表中選擇,然后合并到 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/* 訂單詳細(xì)信息是子 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寫數(shù)據(jù)以下示例中,通過 HTTP 請求提供表示層次行數(shù)據(jù)的 XML,然后將其傳遞到 ISAPI 模板中指定的 Transact SQL 代碼。在存儲過程中對 XML 進(jìn)行語法分析,并進(jìn)行相應(yīng)的寫入操作:Create Procedure InsertOrder @Order NVARCHAR(4000) = NULL,@OrderId int Output-DECLARE @hDoc INTDECLARE @PKId INT BEGIN TRANSACTION/* 將 XML 載入文檔以進(jìn)行分析 */ EXEC sp_xml_preparedocument @hDoc OUTPUT, @Order/* 插入訂單標(biāo)頭 */ 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/* 插入訂單詳細(xì)信息 */ 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')/* 指定輸出參數(shù)的值 */Select @OrderId = @PKId COMMIT TRANSACTION/* 清除 XML 文檔 */ EXEC sp_xml_removedocument @hDoc 總結(jié)本文以及附帶的示例介紹了有關(guān)數(shù)據(jù)轉(zhuǎn)換的信息。通過數(shù)據(jù)轉(zhuǎn)換,可以使用 SQL Server 2000 的 XML 功能將現(xiàn)有 Transact SQL 代碼作為 Web 服務(wù)提供。本文集中討論了傳入和傳出 Transact SQL 代碼的數(shù)據(jù)與 SOAP 消息(在 Web 服務(wù)客戶機(jī)和服務(wù)器之間使用)之間的轉(zhuǎn)換。這些解決方案的性能各異,并且受所傳遞的數(shù)據(jù)大小影響。在本系列后面的文章中,我們將對這些實(shí)現(xiàn)方法進(jìn)行比較。評估現(xiàn)有代碼是否適合作為 Web 服務(wù)時,接口只不過是應(yīng)當(dāng)考慮的諸多因素之一。應(yīng)考慮的其它因素包括安全性(包括授權(quán)、身份驗(yàn)證和加密)、事務(wù)模型、狀態(tài)模型、返回錯誤和結(jié)果的方式,以及代碼是同步還是異步執(zhí)行,等等。
標(biāo)簽: Sql Server 數(shù)據(jù)庫
主站蜘蛛池模板: 天堂视频网站 | 中文字幕在线看视频一区二区三区 | 精品九九久久国内精品 | 久久久久久久久免费影院 | 99久久99久久久精品久久 | 992人人tv香蕉国产精品 | 真人一级毛片免费观看视频 | 99九九视频 | 国产欧美一区二区三区久久 | 亚洲欧美日韩在线播放 | 久久免费视频精品 | 夜色精品国产一区二区 | 三级毛片免费 | 国产亚洲福利一区二区免费看 | 免费手机黄色网址 | 白嫩美女直冒白浆 | 欧美在线bdsm调教一区 | 国产成人久久综合热 | 国产在线播放免费 | 国产精品观看 | 午夜性爽快免费视频播放 | 色综合久久久久久888 | 国产成人免费高清激情视频 | 国产精品免费看久久久香蕉 | 亚洲小视频在线播放 | 伊在人亚洲香蕉精品区 | 免费人成激情视频在线观看冫 | 欧美国产91 | 美国一级片免费 | 国产精品成人观看视频网站 | 亚洲一区二区三区不卡在线播放 | 亚洲在成人网在线看 | 久久99爱视频 | 亚洲精品国产精品一区二区 | 亚洲免费中文 | 日韩精品午夜视频一区二区三区 | 深夜福利网址 | 爱呦视频在线播放网址 | 日本三级在线观看中文字 | 香蕉一区二区三区观 | 精品欧美成人bd高清在线观看 |