1、Create、Alter和Drop
CREATE PROCEDURE USP_CategoryList AS SELECT CategoryID,CategoryName FROM Category
在建立儲存過程時,應該使用一致的規範來命名儲存過程,而不要使用sp_,使用sp_只會導致名稱衝突和混亂。可以使用usp_作為儲存過程名的字首,但即使不使用任何字首,也比使用sp_好。
2、返回記錄集
EXEC USP_CategoryList
3、編譯儲存過程
EXEC sp_recompile USP_CategoryList
4、檢視儲存過程
sp_helptext USP_CategoryList
5、加密儲存過程
CREATE PROCEDURE USP_CategoryList WITH ENCRYPTION AS SELECT CategoryID,CategoryName FROM Category
6、輸入引數
CREATE PROCEDURE USP_CategoryList ( @CategoryID INT ) AS SELECT CategoryID,CategoryName FROM Category WHERE CategoryID = @CategoryID
EXEC USP_CategoryList 1
EXEC StoredProcedure @Parameter1 = n, @Parameter2 = 'n'
7、引數的預設值
呼叫儲存過程時,必須為所有引數指定值,除非建立引數有預設值。
CREATE PROCEDURE StoredProcedure ( @Variable DataType = DefaultValue )
8、輸出引數
使用output定義輸出引數,在不需要返回整個記錄集時,輸出引數非常適合用於返回單個資料單元。返回單行資料時,使用輸出引數比使用記錄集快得多。
CREATE PROCEDURE USP_CategoryList ( @CategoryID INT, @CategoryName VARCHAR(50) OUTPUT ) AS SELECT @CategoryName = CategoryName FROM Category WHERE CategoryID = @CategoryID
DECLARE @CategoryName VARCHAR(50) EXEC USP_CategoryList @CategoryID = 1, @CategoryName OUTPUT PRINT @CategoryName
9、return關鍵字
return關鍵字無條件地終止儲存過程的執行,並向呼叫它的批處理或客戶返回一個值。
使用返回值來指出執行是失敗還是成功,而不是使用它返回實際資料。如果只需要返回一個值而不是這個資料集,可以使用輸出引數。
EXEC @IntLocalVariable = storedProcedureName
CREATE PROCEDURE USP_IsItOK ( @OK VARCHAR(10) ) AS IF @OK = 'OK' RETURN 0 ELSE RETURN -100
DECLARE @ReturnCode INT EXEC @ReturnCode = USP_IsItOK 'OK' PRINT @ReturnCode EXEC @ReturnCode = USP_IsItOK 'NotOK' PRINT @ReturnCode