【发布时间】:2013-03-22 16:08:03
【问题描述】:
我的表格包含以下列 empid、month、year、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
有人可以帮忙吗?
【问题讨论】:
-
"有人可以帮忙吗?" - 我可以将其更改为更合理的设计,即每天有一个 行,但我认为这不是您要求的那种帮助。
标签: sql-server tsql