SQL Server存儲過程基礎

在本教學中,將學習如何在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關鍵字分隔存儲過程的標題和正文。

如果存儲過程有一個語句,則語句周圍的BEGINAND關鍵字是可選的。 但是,最好包含它們以使代碼清晰。

請注意,除了CREATE PROCEDURE關鍵字之外,還可以使用CREATE PROC關鍵字使語句更短。

要編譯此存儲過程,請在SQL Server Management Studio中將其作為普通SQL語句執行,如下圖所示:

如果代碼正確,那麼將看到以下消息:

Commands completed successfully.

那麼表示存儲過程已成功編譯並保存到資料庫目錄中。

可以在對象資源管理器中的可編程性 -> 存儲過程 下找到存儲過程,如下所示:

有時,需要單擊“刷新”按鈕以手動更新對象資源管理器中的資料庫對象。

執行存儲過程

要執行存儲過程,請使用EXECUTEEXEC語句,後跟存儲過程的名稱:

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 PROCEDUREDROP PROC語句:

DROP PROCEDURE sp_name;

或者,

DROP PROC sp_name;

其中sp_name是要刪除的存儲過程的名稱。

例如,要刪除uspProductList存儲過程,請執行以下語句:

DROP PROCEDURE uspProductList;

在本教學中,學習了如何管理SQL Server存儲過程,包括創建,執行,修改和刪除存儲過程。


上一篇: SQL Server存儲過程 下一篇: SQL Server用戶定義函數