在本教學中,將學習如何在SQL Server中管理存儲過程,包括創建,執行,修改和刪除存儲過程。
創建簡單的存儲過程
以下SELECT語句返回bb_stores
示例資料庫中products
表的產品列表:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
product_name;
要創建包裝此查詢的存儲過程,請使用CREATE PROCEDURE
語句,如下所示:
CREATE PROCEDURE uspProductList
AS
BEGIN
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
product_name;
END;
在這個語法中:
uspProductList
是存儲過程的名稱。AS
關鍵字分隔存儲過程的標題和正文。
如果存儲過程有一個語句,則語句周圍的BEGIN
和AND
關鍵字是可選的。 但是,最好包含它們以使代碼清晰。
請注意,除了CREATE PROCEDURE
關鍵字之外,還可以使用CREATE PROC
關鍵字使語句更短。
要編譯此存儲過程,請在SQL Server Management Studio中將其作為普通SQL語句執行,如下圖所示:
如果代碼正確,那麼將看到以下消息:
Commands completed successfully.
那麼表示存儲過程已成功編譯並保存到資料庫目錄中。
可以在對象資源管理器中的可編程性 -> 存儲過程 下找到存儲過程,如下所示:
有時,需要單擊“刷新”按鈕以手動更新對象資源管理器中的資料庫對象。
執行存儲過程
要執行存儲過程,請使用EXECUTE
或EXE
C語句,後跟存儲過程的名稱:
EXECUTE sp_name;
或
EXEC sp_name;
其中sp_name
是要執行的存儲過程的名稱。
例如,要執行uspProductList
存儲過程,請使用以下語句:
EXEC uspProductList;
存儲過程返回以下輸出:
修改存儲過程
若要修改現有存儲過程,請使用ALTER PROCEDURE
語句。
首先,通過右鍵單擊存儲過程名稱打開存儲過程以查看其內容,然後選擇“修改”菜單項:
其次,通過按價格而不是產品名稱對產品進行排序來更改存儲過程的主體:
ALTER PROCEDURE uspProductList
AS
BEGIN
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price
END;
第三步,單擊執行按鈕,SQL Server修改存儲過程並返回以下輸出:
Commands completed successfully.
現在,如果再次執行存儲過程,將看到更改生效:
EXEC uspProductList;
得到以下輸出結果:
刪除存儲過程
要刪除存儲過程,請使用DROP PROCEDURE
或DROP PROC
語句:
DROP PROCEDURE sp_name;
或者,
DROP PROC sp_name;
其中sp_name
是要刪除的存儲過程的名稱。
例如,要刪除uspProductList
存儲過程,請執行以下語句:
DROP PROCEDURE uspProductList;
在本教學中,學習了如何管理SQL Server存儲過程,包括創建,執行,修改和刪除存儲過程。