SQL Server 中的 UPDATE 存储过程

如何在 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
UPDATE Stored Procedure in SQL Server 3

现在,让我们看看存储过程的执行是否更新了我们 EmployeeDup 表中的姓氏和职业。

SELECT [ID]
      ,[FirstName]
      ,[LastName]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [EmployeeDup]
UPDATE Stored Procedure in SQL Server 4

带 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
UPDATE Stored Procedure 6

让我们运行以下查询,看看存储过程是否更新了记录。

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
UPDATE Stored Procedure 9

让我们看看插入的数据。

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 Stored Procedure 12

使用下面显示的查询来检查 UPDATE 存储过程的结果。

SELECT [ID]
      ,[FirstName]
      ,[LastName]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [EmployeeDup]
  ORDER BY [Sales] DESC