如何在 SQL 存储过程中编写 UPDATE 语句?或如何编写带示例的 UPDATE 存储过程。
对于此 SQL Server UPDATE 存储过程演示,我们将使用下面的表。我建议您参考“存储过程简介”文章以了解基础知识。

SQL Server UPDATE 存储过程示例
在此示例中,我们将展示如何在存储过程中使用 UPDATE 语句。请参考“存储过程简介”文章。
-- Example for UPDATE Statement within the Stored Procedure in SQL Server
IF OBJECT_ID ( 'UpdateStoredProcedureFirstExample', 'P' ) IS NOT NULL
DROP PROCEDURE UpdateStoredProcedureFirstExample;
GO
CREATE PROCEDURE UpdateStoredProcedureFirstExample
AS
BEGIN
SET NOCOUNT ON;
UPDATE [EmployeeDup] SET [LastName] = N'Tutorial Gateway',
[Occupation] = N'Management'
END
GO
从上面的代码 SQL 片段中,您可以看到,我们正在将 EmployeeDup 表中所有记录的姓氏更新为 Tutorial gateway,将职业更新为 Management。运行上面的查询
Messages
--------
Command(s) completed successfully.
使用 EXEC 命令(执行命令)来执行存储过程
EXEC [dbo].[UpdateStoredProcedureFirstExample]; GO

现在,让我们看看存储过程的执行是否更新了我们 EmployeeDup 表中的姓氏和职业。
SELECT [ID]
,[FirstName]
,[LastName]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [EmployeeDup]

带 WHERE 子句的 SQL Server UPDATE 存储过程
在此示例中,我们将向您展示如何在存储过程中的 UPDATE 语句以及 WHERE 子句一起使用。
如您所见,该过程将更新 EmployeeDup 表中所有年收入大于或等于 70000 的记录的姓氏为 Gateway Tutorial,职业为 Admin。
-- Example for UPDATE Statement within the Stored Procedure in SQL Server
IF OBJECT_ID ( 'UpdateStoredProcedureSecondExample', 'P' ) IS NOT NULL
DROP PROCEDURE UpdateStoredProcedureSecondExample;
GO
CREATE PROCEDURE UpdateStoredProcedureSecondExample
AS
BEGIN
SET NOCOUNT ON;
UPDATE [EmployeeDup] SET [LastName] = N'Gateway Tutorial',
[Occupation] = N'Admin'
WHERE [YearlyIncome] >= 70000
END
GO
运行上面带 WHERE 子句的 Update Statement 存储过程查询
Messages
--------
Command(s) completed successfully.
让我们使用 EXEC 命令来执行存储过程。
EXEC [dbo].[UpdateStoredProcedureSecondExample] GO

让我们运行以下查询,看看存储过程是否更新了记录。
SELECT [ID]
,[FirstName]
,[LastName]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [EmployeeDup]
ORDER BY [YearlyIncome] DESC

SQL 存储过程中的 UPDATE 语句和参数
此示例展示了如何创建带参数的 UPDATE 存储过程。
-- Example for UPDATE Statement within the Stored Procedure
IF OBJECT_ID ( 'UpdateStoredProcedureThirdExample', 'P' ) IS NOT NULL
DROP PROCEDURE UpdateStoredProcedureThirdExample;
GO
CREATE PROCEDURE UpdateStoredProcedureThirdExample
@Occupation VARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
UPDATE [EmployeeDup] SET [YearlyIncome] = 110000
WHERE [Occupation] = @Occupation
END
GO
运行上面带参数的 Update Statement 存储过程查询
Messages
--------
Command(s) completed successfully.
我来执行存储过程。如您所见,我们有一个 @Occupation 参数。因此,让我们使用以下任一方式传递参数值。
EXEC [dbo].[UpdateStoredProcedureThirdExample] @Occupation = N'Admin'; GO -- Or you can write EXEC [dbo].[UpdateStoredProcedureThirdExample] N'Admin'; GO

让我们看看插入的数据。
SELECT [ID]
,[FirstName]
,[LastName]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [EmployeeDup]
ORDER BY [YearlyIncome] DESC

存储过程中带多个参数的 UPDATE 语句
在此示例中,我们将在存储过程中的 UPDATE 语句中使用多个参数。
-- Example for UPDATE Statement within the Stored Procedure
IF OBJECT_ID ( 'UpdateStoredProcedureFourthExample', 'P' ) IS NOT NULL
DROP PROCEDURE UpdateStoredProcedureFourthExample;
GO
CREATE PROCEDURE UpdateStoredProcedureFourthExample
@Occupation VARCHAR(50),
@Sales FLOAT
AS
BEGIN
SET NOCOUNT ON;
UPDATE [EmployeeDup] SET [FirstName] = N'SQL Tutorial',
[YearlyIncome] = 150000
WHERE [Occupation] = @Occupation OR [Sales] >= @Sales
END
GO
运行上面带多个参数的 Update Statement 存储过程查询
Messages
--------
Command(s) completed successfully.
您可以执行存储过程的次数。我来执行 sp。
EXEC [dbo].[UpdateStoredProcedureFourthExample] @Occupation = N'Management', @Sales = 2500; GO --OR You Can Write EXEC [dbo].[InsertStoredProcedureFifthExample] @Sales = 2500, @Occupation = N'Management'; GO --OR You Can Write EXEC [dbo].[InsertStoredProcedureFifthExample] N'Management', 2500; GO

使用下面显示的查询来检查 UPDATE 存储过程的结果。
SELECT [ID]
,[FirstName]
,[LastName]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [EmployeeDup]
ORDER BY [Sales] DESC
