创建存储过程

适用于:yesSQL Server (所有受支持的版本) Yes Azure SQL 数据库 azure SQL yes 托管实例 azure Synapse analytics yes 分析平台 Yes 系统 (PDW)

本主题说明如何使用 SQL Server Management Studio 和使用 transact-sql SQL create procedure 语句创建 SQL 的存储过程。

权限

需要在数据库中有 CREATE PROCEDURE 权限,对在其中创建过程的架构有 ALTER 权限。

如何创建存储过程

您可以使用以下项之一:

使用 SQL Server Management Studio

在对象资源管理器中创建过程

  1. 对象资源管理器中,连接到数据库引擎的实例,然后展开该实例。

  2. 展开 " 数据库",展开 " AdventureWorks2012 " 数据库,然后展开 " 可编程性"。

  3. 右键单击“存储过程”,再单击“新建存储过程”。

  4. “查询” 菜单上,单击 “指定模板参数的值”

  5. “指定模板参数的值” 对话框中,输入下列所示的参数值。

    参数
    作者 您的姓名
    创建日期 今天的日期
    说明 返回雇员数据。
    Procedure_name HumanResources.uspGetEmployeesTest
    @Param1 @LastName
    @Datatype_For_Param1 nvarchar(50)
    Default_Value_For_Param1 Null
    @Param2 @FirstName
    @Datatype_For_Param2 nvarchar(50)
    Default_Value_For_Param2 Null
  6. 单击“确定”。

  7. “查询编辑器” 中,使用以下语句替换 SELECT 语句:

    SELECT FirstName, LastName, Department  
    FROM HumanResources.vEmployeeDepartmentHistory  
    WHERE FirstName = @FirstName AND LastName = @LastName  
        AND EndDate IS NULL;  
    
  8. 若要测试语法,请在 “查询” 菜单上,单击 “分析” 。 如果返回错误消息,则请将这些语句与上述信息进行比较,并视需要进行更正。

  9. 若要创建该过程,请在 " 查询 " 菜单上单击 " 执行"。 该过程作为数据库中的对象创建。

  10. 若要查看在对象资源管理器中列出的过程,请右键单击“存储过程”,然后选择“刷新”。

  11. 若要运行该过程,请在对象资源管理器中右键单击存储过程名称 HumanResources.uspGetEmployeesTest,然后选择“执行存储过程”。

  12. 在 " 执行过程 " 窗口中,输入 Margheim 作为参数 的值,并输入值 Diane 作为参数 @FirstName 的值。

警告

验证所有用户的输入。 验证前请勿连接用户输入。 绝对不要执行根据尚未验证的用户输入构造的命令。

“使用 Transact-SQL”

在查询编辑器中创建过程

  1. 在“对象资源管理器”中,连接到数据库引擎实例

  2. “文件” 菜单中,单击 “新建查询”

  3. 将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。 该示例将使用其他过程名称创建与上述相同的存储过程。

    USE AdventureWorks2012;  
    GO  
    CREATE PROCEDURE HumanResources.uspGetEmployeesTest2   
        @LastName nvarchar(50),   
        @FirstName nvarchar(50)   
    AS   
    
        SET NOCOUNT ON;  
        SELECT FirstName, LastName, Department  
        FROM HumanResources.vEmployeeDepartmentHistory  
        WHERE FirstName = @FirstName AND LastName = @LastName  
        AND EndDate IS NULL;  
    GO  
    
    
  4. 若要运行该过程,请将以下示例复制并粘贴到一个新的查询窗口中,然后单击 “执行” 。 请注意,将显示指定参数值的不同方法。

    EXECUTE HumanResources.uspGetEmployeesTest2 N'Ackerman', N'Pilar';  
    -- Or  
    EXEC HumanResources.uspGetEmployeesTest2 @LastName = N'Ackerman', @FirstName = N'Pilar';  
    GO  
    -- Or  
    EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar', @LastName = N'Ackerman';  
    GO  
    
    

后续步骤

CREATE PROCEDURE (Transact-SQL)