我有一个 SQL 表,我需要在其中更新Date
多个用户的字段。主键 ( userId
) 字段是 int。现在我发送Date
逗号分隔字符串中的值(如“10/06/2013,12/05/2013,16/07/2013”)和userId
逗号分隔字符串中的相应值(如“1001,1002,1005 ”)。
如何更新存储过程中的所有相关用户?或者我应该以任何其他方式发送userId
s 和s 吗?Date
我有一个 SQL 表,我需要在其中更新Date
多个用户的字段。主键 ( userId
) 字段是 int。现在我发送Date
逗号分隔字符串中的值(如“10/06/2013,12/05/2013,16/07/2013”)和userId
逗号分隔字符串中的相应值(如“1001,1002,1005 ”)。
如何更新存储过程中的所有相关用户?或者我应该以任何其他方式发送userId
s 和s 吗?Date
试试这个
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
)
如果您发送一个包含日期和用户 ID 的 XML,那就太好了。这也相对更快。
这就是准备好的语句的用途。创建一个准备好的UPDATE
语句。然后根据需要多次使用不同的值执行它。