怎樣使用SQL2000將現(xiàn)有代碼作為Web服務(wù)提供(2)_Mssql數(shù)據(jù)庫(kù)教程
推薦:詳解SQL Server中數(shù)據(jù)庫(kù)快照的工作原理數(shù)據(jù)庫(kù)快照是怎樣工作的 可以使用典型的數(shù)據(jù)庫(kù)命令CREATE DATABASE語(yǔ)句來(lái)生成一個(gè)數(shù)據(jù)庫(kù)快照,在聲明中有一個(gè)源數(shù)據(jù)庫(kù)快照的附加說(shuō)明。當(dāng)快照被建立時(shí),同時(shí)生成一個(gè)稀疏文件。這個(gè)文件(只能使用在NTFS卷中)在初始化的時(shí)候并沒(méi)有磁盤空間分配給它盡管你可能
/* 訂單是父 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, OrderDetails
where Orders.OrderId = OrderDetails.OrderId
ORDER BY [Order!1!OrderId],[OrderDetail!2!OrderDetailId]
For XML EXPLICIT
寫數(shù)據(jù)
以下示例中,通過(guò) HTTP 請(qǐng)求提供表示層次行數(shù)據(jù)的 XML,然后將其傳遞到 ISAPI 模板中指定的 Transact SQL 代碼。在存儲(chǔ)過(guò)程中對(duì) XML 進(jìn)行語(yǔ)法分析,并進(jìn)行相應(yīng)的寫入操作:
Create Procedure InsertOrder
@Order NVARCHAR(4000) = NULL,
@OrderId int Output
-
DECLARE @hDoc INT
DECLARE @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, Quantity
FROM 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)換的信息。通過(guò)數(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ù)大小影響。在本系列后面的文章中,我們將對(duì)這些實(shí)現(xiàn)方法進(jìn)行比較。
評(píng)估現(xiàn)有代碼是否適合作為 Web 服務(wù)時(shí),接口只不過(guò)是應(yīng)當(dāng)考慮的諸多因素之一。應(yīng)考慮的其它因素包括安全性(包括授權(quán)、身份驗(yàn)證和加密)、事務(wù)模型、狀態(tài)模型、返回錯(cuò)誤和結(jié)果的方式,以及代碼是同步還是異步執(zhí)行,等等。
分享:SQL Server記錄輪班的技巧例:公司員工采取三個(gè)輪班制度:凌晨0:00到早上8:00為第一班,早上8:00到下午4:00為第二班,下午4:00到晚上12:00為第三班。 員工使用電子時(shí)鐘進(jìn)行簽名,這種電子簽名可以自動(dòng)將記錄添加到SQL Server數(shù)據(jù)庫(kù)中。但是,有時(shí)候,需要增加一個(gè)夜班;即使這
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 注意:在SQL SERVER中使用NChar、NVarchar和NText
- SQL Server數(shù)據(jù)庫(kù)增強(qiáng)版?zhèn)浞蒹w驗(yàn)
- 如何在SQL Server2005中還原數(shù)據(jù)庫(kù)
- SQL Server 2000數(shù)據(jù)庫(kù)崩潰后的補(bǔ)救措施
- 關(guān)于Oracle與SQL Server數(shù)據(jù)庫(kù)鏡像的對(duì)比
- 如何巧妙規(guī)劃使用Oracle數(shù)據(jù)空間
- 解析最基本的sql語(yǔ)句操作
- Sql學(xué)習(xí)第一天——SQL 練習(xí)題(建表/sql語(yǔ)句)
- sql lite 數(shù)據(jù)庫(kù)之間表復(fù)制的方法
- 解讀SQL Server 2005:數(shù)據(jù)類型最大值
猜你也喜歡看這些
- mysql占用CPU過(guò)高的解決辦法(添加索引)
- mysql 按照時(shí)間段來(lái)獲取數(shù)據(jù)的方法
- Mysql中的find_in_set的使用方法介紹
- 通過(guò)mysqladmin遠(yuǎn)程管理mysql的方法
- CentOS6.4系統(tǒng)中Mysql數(shù)據(jù)庫(kù)卸載、安裝與配置
- 使用java處理字符串公式運(yùn)算的方法
- mysql常用監(jiān)控腳本命令整理
- 如何用workbench導(dǎo)出mysql數(shù)據(jù)庫(kù)關(guān)系圖
- MySql大批量導(dǎo)入數(shù)據(jù)優(yōu)化
- 服務(wù)器不支持 MySql 數(shù)據(jù)庫(kù)的解決方法
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-怎樣使用SQL2000將現(xiàn)有代碼作為Web服務(wù)提供(2)
。