适用于: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 数据库的实例。
从工具栏中选择“新建询问”。
在查询窗口中输入以下代码,将
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)
指定存储过程中的参数