SQL Server 2005新功能-TSQL

來源:互聯網
上載者:User
server

SQL Server 2005相對於SQL Server 2000改進很大,有些還是非常實用的。

舉幾個例子來簡單說明 這些例子我引用了Northwind庫。

1. TOP 運算式
SQL Server 2000的TOP是個固定值,是不是覺得不爽,現在改進了。

--前n名的訂單
declare @n int 
set @n = 10 
select TOP(@n) * from Orders

2. 分頁
不知各位過去用SQL Server 2000是怎麼分頁的,大多都用到了暫存資料表。SQL Server 2005一句話就支援分頁,效能據說也非常不錯。


--按Freight從小到大排序,求20到30行的結果 
select * from( 
    select OrderId, Freight, ROW_NUMBER() OVER(order by Freight) as row from Orders 
) a 
where row between 20 and 30

3. 排名


select * from( 
    select OrderId, Freight, RANK() OVER(order by Freight) as rank from Orders 
) a 
where rank between 20 and 30

4. try ... catch
SQL Server 2000沒有異常,T-SQL必須逐行檢查錯誤碼,對於習慣了try catch程式員,2005是不是更加親切:


SET XACT_ABORT ON  -- 開啟 try功能 
BEGIN TRY 
    begin tran 
        insert into Orders(CustomerId) values(-1) 
    commit tran 
    print 'commited' 
END TRY 
BEGIN CATCH 
    rollback    
    print 'rolled back' 
END CATCH

5. 通用運算式CTE
通過運算式可免除你過去建立暫存資料表的麻煩。
www.knowsky.com


--例子:結合通用運算式進行分頁
WITH OrderFreight AS( 
    select OrderId, Freight, ROW_NUMBER() OVER(order by Freight) as row from Orders 

select OrderId, Freight from OrderFreight where row between 10 and 20
特別,通過運算式還支援遞迴。


6. 直接發布Web Service
想要把store procedure變成Web Service就用這個吧,.NET, IIS都不需要,通過Windows 2003的HTTP Protocol Stack直接發布WebService,用這個功能需要Windows 2003 sp1

--DataSet CustOrdersOrders(string customerID) 
CREATE ENDPOINT Orders_Endpoint 
state=started 
as http( 
    path='/sql/orders', 
    AUTHENTICATION=(INTEGRATED), 
    ports=(clear) 

for soap( 
    WebMethod 'CustOrdersOrders'(   
        name='Northwind.dbo.CustOrdersOrders' 
    ), 
    
    wsdl=default, 
    database='Northwind', 
    namespace='http://mysite.org/' 
)
Web Service就發布好了,敲入http://localhost/sql/orders?wsdl得到wsdl



相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。