HOME> 世界杯比利时> 创建存储过程 - SQL Server

创建存储过程 - SQL Server

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统 (PDW)Microsoft Fabric 预览版中的 SQL 数据库

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

Permissions

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

创建存储过程

可以在 SSMS 查询窗口中使用 SQL Server Management Studio (SSMS) 用户界面或 Transact-SQL 来创建存储过程。 始终使用最新版本的 SSMS。

Note

本文中的示例存储过程使用示例 AdventureWorksLT2022 (SQL Server) 或 AdventureWorksLT(Azure SQL 数据库)数据库。 有关如何获取和使用 AdventureWorksLT 示例数据库的说明,请参阅 AdventureWorks 示例数据库。

使用 SQL Server Management Studio

要在 SSMS 中创建存储过程,请执行以下操作:

在“对象资源管理器”中,连接到 SQL Server 或 Azure SQL 数据库的实例。

有关更多信息,请参阅以下快速入门:

使用 SSMS 连接 SQL Server 实例并进行查询

使用 SSMS 连接到 Azure SQL 数据库或 Azure SQL 托管实例并进行查询

展开实例,然后展开“数据库”。

展开所需的数据库,然后展开“可编程性”。

右键单击“存储过程”,然后选择“新建”>“存储过程”。 此时会打开一个新的查询窗口,其中包含存储过程的模板。

默认的存储过程模板具有两个参数。 如果存储过程的参数更少、更多或没有参数,请根据需要在模板中添加或删除参数行。

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

在“指定模板参数值”对话框中,提供“值”字段的以下信息:

作者:将 Name 替换为你自己的名称。

创建日期:输入今天的日期。

说明:简要描述该过程的作用。

Procedure_Name:将 ProcedureName 替换为新的存储过程名称。

@Param1:将 @p1 替换为第一个参数名称,例如 @ColumnName1。

@Datatype_For_Param1:根据需要,将 int 替换为第一个参数的数据类型,例如 nvarchar(50)。

Default_Value_For_Param1:根据需要,将 0 替换为第一个参数的默认值或 NULL。

@Param2:将 @p2 替换为第二个参数名称,例如 @ColumnName2。

@Datatype_For_Param2:根据需要,将 int 替换为第二个参数的数据类型,例如 nvarchar(50)。

Default_Value_For_Param2:根据需要,将 0 替换为第二个参数的默认值或 NULL。

以下屏幕截图显示了示例存储过程的已完成对话框:

Select OK.

在“查询编辑器”中,将 SELECT 语句替换为过程的查询。

以下代码显示了示例存储过程的已完成 CREATE PROCEDURE 语句:

-- =======================================================

-- Create Stored Procedure Template for Azure SQL Database

-- =======================================================

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE SalesLT.uspGetCustomerCompany

(

-- Add the parameters for the stored procedure here

@LastName nvarchar(50) = NULL,

@FirstName nvarchar(50) = NULL

)

AS

/*

-- =============================================

-- Author: My Name

-- Create Date: 01/23/2024

-- Description: Returns the customer's company name.

-- =============================================

*/

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON

-- Insert statements for procedure here

SELECT FirstName, LastName, CompanyName

FROM SalesLT.Customer

WHERE FirstName = @FirstName AND LastName = @LastName;

END

GO

若要测试语法,请在“查询”菜单上选择“分析”。 更正所有错误。

从工具栏中选择“执行”。 该过程作为数据库中的对象创建。

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

要运行该过程,请执行以下步骤:

在“对象资源管理器”中,请右键单击存储过程名称,然后选择“执行存储过程”。

在“执行过程”窗口中,输入所有参数的值,然后选择“确定”。 有关详细说明,请参阅执行存储过程。

例如,要运行 SalesLT.uspGetCustomerCompany 示例过程,请输入 Cannon 作为 @LastName 参数,并输入 Chris 作为 @FirstName 参数,然后选择“确定”。 存储过程将运行并返回 FirstNameChris、LastNameCannon 和 CompanyNameOutdoor Sporting Goods。

Important

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

Use Transact-SQL

要在“查询编辑器”中创建过程,请执行以下操作:

在 SSMS 中,连接到 SQL Server 或 Azure SQL 数据库的实例。

从工具栏中选择“新建询问”。

在查询窗口中输入以下代码,将 、任何参数的名称和数据类型以及 SELECT 语句替换为你自己的值。

CREATE PROCEDURE

@ ,

@

AS

SET NOCOUNT ON;

SELECT ;

GO

例如,以下语句在 AdventureWorksLT 数据库中创建与上一个示例相同的存储过程,但过程名称略有不同。

CREATE PROCEDURE SalesLT.uspGetCustomerCompany1

@LastName nvarchar(50),

@FirstName nvarchar(50)

AS

SET NOCOUNT ON;

SELECT FirstName, LastName, CompanyName

FROM SalesLT.Customer

WHERE FirstName = @FirstName AND LastName = @LastName;

GO

从工具栏中选择“执行”以执行查询。 将创建存储过程。

要运行存储过程,请在新的查询窗口中输入 EXECUTE 语句,提供任何参数的值,然后选择“执行”。 有关详细说明,请参阅执行存储过程。

Related content

存储过程(数据库引擎)

CREATE PROCEDURE(Transact-SQL)

执行存储过程

EXECUTE (Transact-SQL)

指定存储过程中的参数