我有一个表,其中包含以下列 empid、月、年、day1、day2、day3、day4............day31。
我写了一个SP来每天更新考勤,一旦员工登录。
CREATE PROC PROC_Attendance_update @empid INT, @day INT, @month INT, @year INT
AS
BEGIN
DECLARE @sql_text VARCHAR(8000)
SET @sql_Text = 'UPDATE tblattendance SET DAY'+CONVERT(VARCHAR(2),@day)+'=''P'' WHERE empid = '+CONVERT(VARCHAR(4), @empid)+' AND month = '+CONVERT(VARCHAR(4), @month)+' AND Year ='+CONVERT(VARCHAR(4), @year)
EXEC(@sql_text)
END
但是,我不希望它在动态 sql 中。我想将它重写为标准的 T-SQL 代码。
我试过了没有用。
CREATE PROC PROC_Attendance_update @empid INT, @day INT, @month INT, @year INT
AS
BEGIN
UPDATE tblattendance SET CASE WHEN @day=1 THEN DAY1 = 'P'
WHEN @day=2 THEN DAY2 = 'P'
.
.
WHEN @day=31 THEN DAY31 = 'P'
END
WHERE empid = @empid AND MONTH = @month AND Year = @Year
END
有人可以帮忙吗?