【问题标题】:How to create a stored procedure to update Employee table?如何创建存储过程来更新 Employee 表?
【发布时间】:2019-12-06 19:56:36
【问题描述】:

我正在尝试更新我创建的员工表上的薪水。我的程序必须接受两个值,一个用于emp_id,另一个用于新工资(emp_salary)。下面是我的员工表代码:

create table emp 
(
     emp_id  int, 
     emp_name varchar(30), 
     salary numeric(10, 2), 
     dept_code char(4)
)

insert into emp 
values (1, 'Jones', 11111.00, 'SALE'), (2, 'Smith', 22222.00, 'SALE'),
       (3, 'Potter', 33333.00, 'TECH'), (4, 'Clinton', 44444.00, 'MNGT')

下面是我的存储过程代码:

create procedure usp_update_Imani
   (@emp_id int, @salary int)
as
begin
    update emp 
    set salary = salary * 1.1
    where emp_id = 1, 2, 3, 4;
End;

【问题讨论】:

    标签: sql-server database stored-procedures


    【解决方案1】:

    简单,只需在你的update 语句中引用存储过程的参数即可:

    create procedure usp_update_Imani(@emp_id int, @salary int)
    as
    begin
        update emp set salary = @salary where emp_id = @emp_id;
    end;
    

    编译,测试如下:

    exec usp_update_Imani(1, 121212)
    

    【讨论】:

      【解决方案2】:

      我假设你想传入新的薪水,因为你有一个值参数。此外,您正在传递 emp_id,因此不确定为什么要尝试更新所有这些(无论如何,您在那里的语法都会失败)。以下是您将如何创建一个将单个 emp_id 的薪水更新为新值的过程。

      create procedure usp_update_Imani
      (
          @emp_id int
          , @salary int
      ) AS
          set nocount on;
      
          UPDATE emp set salary = @salary
          where emp_id = @emp_id
      

      【讨论】:

        猜你喜欢
        • 2022-07-30
        • 2018-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-18
        • 1970-01-01
        相关资源
        最近更新 更多