在本教程中,将学习如何在SQL Server中管理存储过程,包括创建,执行,修改和删除存储过程。

创建简单的存储过程

以下 SELECT 语句返回 bb_stores 示例数据库 products 表的产品列表:

SELECT 
 product_name, 
 list_price
 production.products
ORDER BY 
 product_name;

要创建包装此查询的存储过程,请使用CREATE PROCEDURE语句,如下所示:

CREATE PROCEDURE uspProductList
BEGIN
    SELECT 
        product_name, 
        list_price
        production.products
    ORDER BY 
        product_name;

在这个语法中:

  • 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
        BEGIN
            SELECT 
                product_name, 
                list_price
                production.products
            ORDER BY 
                list_price 
    

    第三步,单击执行按钮,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存储过程,包括创建,执行,修改和删除存储过程。

    以下是纠正/补充内容:

    如果存储过程有一个语句,则语句周围的BEGIN和AND关键字是可选的改为“如果存储过程有一个语句,则语句周围的BEGIN和END关键字是可选的"  提交时间:2019-10-10