我有一个SQL表,我需要更新多个用户的Date
字段。主键(userId
)字段为int。现在我以逗号分隔的字符串(如“10/06 / 2013,12 / 05 / 2013,16 / 07/2013”)发送Date
值,并在逗号中也显示相应的userId
值分隔的字符串(如“1001,1002,1005”)。
如何更新存储过程中的所有相关用户?或者我应该以任何其他方式发送userId
和Date
?
答案 0 :(得分:1)
试试这个
DECLARE @dates VARCHAR(8000) = '10/06/2013,12/05/2013,16/07/2013'
DECLARE @userid VARCHAR(8000) = '1001,1002,1005'
DECLARE @t1 TABLE
(
dates VARCHAR(50) ,
userid VARCHAR(50)
)
WHILE CHARINDEX(',', @dates) > 0
BEGIN
INSERT INTO @t1
( dates ,
userid
)
VALUES ( SUBSTRING(@dates, 1, ( CHARINDEX(',', @dates) - 1 )) ,
SUBSTRING(@userid, 1, ( CHARINDEX(',', @userid) - 1 ))
)
SET @dates = SUBSTRING(@dates, CHARINDEX(',', @dates) + 1,
LEN(@dates))
SET @userid = SUBSTRING(@userid, CHARINDEX(',', @userid) + 1,
LEN(@userid))
END
INSERT INTO @t1
( dates, userid )
VALUES ( @dates, @userid )
SELECT *
FROM @t1 AS t
UPDATE LMS.dbo.Employee
SET JoiningDate = ( SELECT dates
FROM @t1 AS t
WHERE LMS.dbo.Employee.Code = t.userid
)
答案 1 :(得分:0)
如果您发送包含日期和用户ID的XML,那将是一件好事。这也相对较快。
答案 2 :(得分:0)
这就是准备好的陈述。创建一个准备好的UPDATE
语句。然后根据需要多次执行不同的值。