SQL Server 2005與T-SQL增強(qiáng)
以下的文章主要向大家介紹的是SQL Server 2005數(shù)據(jù)庫中的T-SQL增強(qiáng),SQL Server 2005數(shù)據(jù)庫中的T-SQL增應(yīng)用比例還是占為多數(shù)的,如果你對這一新開發(fā)的技術(shù),心存好奇的話,以下的文章將會(huì)揭開它的神秘面紗。
豐富的數(shù)據(jù)類型 Richer Data Types
1、varchar(max)、nvarchar(max)和varbinary(max)數(shù)據(jù)類型最多可以保存2GB的數(shù)據(jù),可以取代text、ntext或image數(shù)據(jù)類型。
- CREATE TABLE myTable
- (
- id INT,
- content VARCHAR(MAX)
- )
2、XML數(shù)據(jù)類型 XML數(shù)據(jù)類型允許用戶在SQL Server數(shù)據(jù)庫中保存XML片段或文檔。
錯(cuò)誤處理 Error Handling 1、新的異常處理結(jié)構(gòu) 2、可以捕獲和處理過去會(huì)導(dǎo)致批處理終止的錯(cuò)誤。前提是這些錯(cuò)誤不會(huì)導(dǎo)致連接中斷(通常是嚴(yán)重程度為21以上的錯(cuò)誤,例如,表或數(shù)據(jù)庫完整性可疑、硬件錯(cuò)誤等等。)。 3、TRY/CATCH 構(gòu)造
- SET XACT_ABORT ON
- BEGIN TRY
- <core logic>
- END TRY
- BEGIN CATCH TRAN_ABORT
- <exception handling logic>
- END TRY
- @@error may be quired as first statement in CATCH block
4、演示代碼
- USE demo
- GO
創(chuàng)建工作表
- CREATE TABLE student
- (
- stuid INT NOT NULL PRIMARY KEY,
- stuname VARCHAR(50)
- )
- CREATE TABLE score
- (
- stuid INT NOT NULL REFERENCES student(stuid),
- score INT
- )
- GO
- INSERT INTO student VALUES (101,'zhangsan')
- INSERT INTO student VALUES (102,'wangwu')
- INSERT INTO student VALUES (103,'lishi')
- INSERT INTO student VALUES (104,'maliu')
談SQL Server 2005中的T-SQL增強(qiáng)中需要調(diào)用一個(gè)運(yùn)行時(shí)錯(cuò)誤
- SET XACT_ABORT OFF
- BEGIN TRAN
- INSERT INTO score VALUES (101,90)
- INSERT INTO score VALUES (102,78)
- INSERT INTO score VALUES (107, 76) /* 外鍵錯(cuò)誤 */
- INSERT INTO score VALUES (103,81)
- INSERT INTO score VALUES (104,65)
- COMMIT TRAN
- GO
- SELECT * FROM student
- SELECT * FROM score
使用TRY...CATCH構(gòu)造,并調(diào)用一個(gè)運(yùn)行時(shí)錯(cuò)誤
- SET XACT_ABORT OFF
- BEGIN TRY
- BEGIN TRAN
- INSERT INTO score VALUES (101,90)
- INSERT INTO score VALUES (102,78)
- INSERT INTO score VALUES (107, 76) /* 外鍵錯(cuò)誤 */
- INSERT INTO score VALUES (103,81)
- INSERT INTO score VALUES (104,65)
- COMMIT TRAN
- PRINT '事務(wù)提交'
- END TRY
- BEGIN CATCH
- ROLLBACK
- PRINT '事務(wù)回滾'
- SELECT ERROR_NUMBER() AS ErrorNumber,
- ERROR_SEVERITY() AS ErrorSeverity,
- ERROR_STATE() as ErrorState,
- ERROR_MESSAGE() as ErrorMessage;
- END CATCH
- GO
- SELECT * FROM score
- GO
快照隔離 Snapshot Isolation 1、寫入程序不會(huì)阻礙讀取程序 2、新的隔離級別提供了以下優(yōu)點(diǎn): 1) 提高了只讀應(yīng)用程序的數(shù)據(jù)可用性 2) 允許在OLTP環(huán)境中執(zhí)行非阻止讀取操作 3) 可對寫入事務(wù)進(jìn)行自動(dòng)的強(qiáng)制沖突檢測 3、演示代碼
- CREATE DATABASE demo2
- GO
- USE demo2
- ALTER DATABASE demo2 SET allow_snapshot_isolation ON
- CREATE TABLE test
- (
- tid INT NOT NULL primary key,
- tname VARCHAR(50) NOT NULL
- )
- INSERT INTO test VALUES(1,'version1')
- INSERT INTO test VALUES(2,'version2')
- 連接一
- USE demo2
- BEGIN TRAN
- UPDATE test SET tname='version3' WHERE tid=2
- SELECT * FROM test
- 連接二
- USE demo2
- SET transaction isolation level snapshot
- SELECT * FROM test
TOP 增強(qiáng)功能 1、TOP 增強(qiáng)。可以指定一個(gè)數(shù)字表達(dá)式,以返回要通過查詢影響的行數(shù)或百分比,還可以根據(jù)情況使用變量或子查詢。 可以在DELETE、UPDATE和INSERT查詢中使用TOP選項(xiàng)。 2、更好地替換SET ROWCOUNT選項(xiàng),使之更為有效。
- OUTPUT
1、SQL Server 2005引入一個(gè)新的OUTPUT子句,以使您可以沖修改語句(INSERT、UPDATE、DELETE)中將數(shù)據(jù)返回到表變量中。 2、新的OUTPUT子局的語法為:
- OUTPUT INTO @table_variable
可以通過引用插入的表或刪除的表來訪問被修改的行的舊/新影象,其方式與訪問觸發(fā)器類似。在INSERT語句中,只能訪問插入的表。在DELETE語句中,只能訪問刪除的表。在UPDATE語句中,可以訪問插入的表和刪除的表。
以上的相關(guān)內(nèi)容就是對談SQL Server 2005中的T-SQL增強(qiáng)的介紹,望你能有所收獲。
【編輯推薦】