源内容(英文)
在这篇文章中,我们将学习如何在 MS SQL 中修改已创建的存储过程。我们可以通过两种方式来修改存储过程:一种是使用名为 SSMS 的客户端工具,另一种是结合使用 MS SQL Server 中的 T-SQL 语句和 SSMS。
方法 1:使用 SQL Server Management Studio (SSMS) 修改存储过程
- 在“对象资源管理器”中,连接到数据库引擎实例。
- 展开该存储过程所属的数据库。
- 展开“存储过程”,右键点击该存储过程,然后选择“修改”。
- 通过现成的 SQL 语句修改存储过程。
方法 2:使用 T-SQL 语句和 SSMS。
- 在 SSMS 的“对象资源管理器”中,连接到数据库引擎实例。
- 创建一个新数据库
- 使用刚才创建的数据库
- 使用 SSMS 打开一个新的查询窗口
- 使用 ALTER PROCEDURE 语句修改存储过程
示例 1:
在这个示例中,我们将使用 T-SQL 在数据库中创建并修改一个名为 My_procedure 的存储过程。首先在 SSMS 中创建两个查询页,一个用于创建存储过程,另一个用于修改它。
创建存储过程:
CREATE DATABASE Sample_DB;
GO
USE Sample_DB;
GO
CREATE PROCEDURE My_Procedure
@first_name varchar(20),
@last_name varchar(20)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT @first_name , @last_name;
END
GO
EXEC My_Procedure ‘Andy‘, ‘Jessy‘;
输出结果: 输出结果展示了上述存储过程的创建和执行情况。
修改已创建的存储过程:
ALTER PROCEDURE [dbo].[My_Procedure]
@first_name varchar(20),
@last_name varchar(20)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT @last_name + ‘, ‘ + @first_name;
END
输出结果: 执行上述代码,然后在单独的页面中运行该存储过程。
示例 2:
在这个示例中,我们将以不同的方式修改上例中创建的同一个存储过程。请在 SSMS 中创建 3 个页面:第一个用于创建存储过程,第二个用于修改,第三个用于执行修改后的存储过程。
我们的目标是向 My_procedure 添加 3 个参数和一个 CASE 语句。
第 1 页: 创建存储过程
CREATE PROCEDURE My_Procedure
@first_name varchar(20),
@last_name varchar(20),
@choice int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT @first_name , @last_name , @choice;
END
GO
EXEC My_Procedure ‘Andy‘, ‘Jessy‘ , 1;
第 2 页: 修改存储过程
ALTER PROCEDURE [dbo].[My_Procedure]
@first_name varchar(20),
@last_name varchar(20),
@choice int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT ‘Name‘ = case @choice
when 1 then @first_name
when 2 then @last_name
ELSE @first_name + ‘ ‘ + @last_name
END
END
第 3 页: 执行修改后的存储过程
EXEC My_Procedure ‘Andy‘, ‘Jessy‘, 2;
输出结果: