相关文章推荐
会开车的西装  ·  JTS-Geometry ...·  1 年前    · 
眉毛粗的书签  ·  TiDB ...·  2 年前    · 

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

本文介绍如何使用 SQL Server Management Studio 和 Transact-SQL CREATE PROCEDURE 语句创建 Transact-SQL 存储过程。

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

如何创建存储过程

您可以使用以下项之一:

  • SQL Server Management Studio

  • Transact-SQL

    使用 SQL Server Management Studio

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

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

  • 依次展开 “数据库” AdventureWorks2022 数据库和 “可编程性”

  • 右键单击“ 存储过程 ”,然后选择“ 新建存储过程 ”。

  • “查询” 菜单上,选择 “指定模板参数的值”

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

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

    SELECT FirstName, LastName, Department  
    FROM HumanResources.vEmployeeDepartmentHistory  
    WHERE FirstName = @FirstName AND LastName = @LastName  
        AND EndDate IS NULL;  
    
  • 若要测试语法,请在“查询”菜单上选择“分析” 。 如果返回错误消息,请将语句与以前的信息进行比较,并根据需要进行更正。

  • 若要创建该过程,请从“ 查询 ”菜单中选择“ 执行”。 该过程作为数据库中的对象创建。

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

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

  • 在“ 执行过程” 窗口中,输入 Margheim 作为参数 @LastName 的值,输入 值 Diane 作为参数 @FirstName的值。

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

    使用 Transact-SQL

    在查询编辑器中创建过程

  • “对象资源管理器” 中,连接到 数据库引擎的实例。

  • 在“ 文件 ”菜单中,选择“ 新建查询”。

  • 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 此示例创建与上一示例中相同的存储过程,但使用不同的过程名称。

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

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