存儲過程常用的關鍵詞


1、SET XACT_ABORT ON時,在事務中,若出現錯誤,系統即默認回滾事務,但只對非自定義錯誤有效

2、SET XACT_ABORT OFF,默認值,在事務中,回滾一個語句還是整個事務視錯誤的嚴重程序而定,用戶級錯誤一般不會回滾整個事務

3、存儲過程:SET Transaction Isolation Level Read語法的四種情況

SET Transaction Isolation Level Read UNCOMMITTED

使用這句東東呢可以分為四種情況,現在就在這里逐一介紹:

第一種情況:

READ   COMMITTED

這句的作用是:

指定在讀取數據時控制共享鎖以避免臟讀,但數據可在事務結束前更改,從而產生不可重復讀取或幻像數據。該選項是   SQL   Server   的默認值。

第二種情況:

 READ   UNCOMMITTED

這句的作用是:

執行臟讀或0級隔離鎖定,這表示不發出共享鎖,也不接受排它鎖。當設置該選項時,可以對數據執行未提交讀或臟讀;在事務結束前可以更改數據內的數值,行也可以出現在數據集中或從數據集消失。該選項的作用與在事務內所有語句中的所有表上設置 NOLOCK 相同。這是四個隔離級別中限制最小的級別。

第三種情況:

REPEATABLE   READ

這句的作用是:

鎖定查詢中使用的所有數據以防止其他用戶更新數據,但是其他用戶可以將新的幻像行插入數據集,且幻像行包括在當前事務的后續讀取中。因為並發低於默認隔離級別,所以應只在必要時才使用該選項。

第四種情況:

SERIALIZABLE

這句的作用是:

 在數據集上放置一個范圍鎖,以防止其他用戶在事務完成之前更新數據集或將行插入數據集內。這是四個隔離級別中限制最大的級別。因為並發級別較低,所以應只在必要時才使用該選項。該選項的作用與在事務內所有   SELECT   語句中的所有表上設置   HOLDLOCK   相同。

 4、Exec sp_executesql @sqlPopulate 執行SQL語句

5、IF NOT EXISTS(SELECT ProductName FROM Hishop_Products WHERE ProductId = @ProductId) 是否存在某值得用法(in,not in ,exists,not esists 的區別)

6、INSERT INTO #PageIndexForSearch (ProductId) EXEC sp_executesql @SqlPopulate 將某SQL語句的執行結果,添加到臨時表

7、大家在寫查詢時,為了性能,往往會在表后面加一個nolock,或者是with(nolock),其目的就是查詢時不鎖定表,從而達到提高查詢速度的目的。

 

8、可以用select 或set 來為存儲過程變量設置初始值;

9、存儲過程變量是否為空的判斷為( IF @Stock IS NULL);

10、 Lower(@stock)  轉為小寫;

11,SET @ParmDefinition = N'@SearchText nvarchar(256)' 前面的“N” 用於解決統一編碼問題;

12、CAST(@TopCount AS VARCHAR(10)) 類型轉換;

13、 SELECT @CurrentUserAccountStatus = UserAccountStatus  FROM Hishop_Users WHERE UserId = @UserId


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM