1

我有一个 SQL 表,我需要在其中更新Date多个用户的字段。主键 ( userId) 字段是 int。现在我发送Date逗号分隔字符串中的值(如“10/06/2013,12/05/2013,16/07/2013”​​)和userId逗号分隔字符串中的相应值(如“1001,1002,1005 ”)。

如何更新存储过程中的所有相关用户?或者我应该以任何其他方式发送userIds 和s 吗?Date

4

3 回答 3

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
                          )
于 2013-06-14T05:48:31.447 回答
0

如果您发送一个包含日期和用户 ID 的 XML,那就太好了。这也相对更快。

于 2013-06-14T05:28:30.433 回答
0

这就是准备好的语句的用途。创建一个准备好的UPDATE语句。然后根据需要多次使用不同的值执行它。

于 2013-06-14T05:35:15.027 回答