电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:108日期: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 數據庫
主站蜘蛛池模板: 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 电表箱-浙江迈峰电力设备有限公司-电表箱专业制造商 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 苏州防水公司_厂房屋面外墙防水_地下室卫生间防水堵漏-苏州伊诺尔防水工程有限公司 | 奥运星-汽车性能网评-提供个性化汽车资讯| 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 硬度计,金相磨抛机_厂家-莱州华煜众信试验仪器有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 膜结构_ETFE膜结构_膜结构厂家_膜结构设计-深圳市烨兴智能空间技术有限公司 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 凝胶成像系统(wb成像系统)百科-上海嘉鹏 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-沼河浸过滤器 | 温州富欧金属封头-不锈钢封头厂家| 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 成都APP开发-成都App定制-成都app开发公司-【未来久】 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 光照全温振荡器(智能型)-恒隆仪器| 工业废水处理|污水处理厂|废水治理设备工程技术公司-苏州瑞美迪 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 【连江县榕彩涂料有限公司】官方网站| SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 炉门刀边腹板,焦化设备配件,焦化焦炉设备_沧州瑞创机械制造有限公司 | 烽火安全网_加密软件、神盾软件官网| 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 |