SELECT然后更新这些记录,然后在STORED PROCEDURE中返回它们

Sle*_*lee 6 sql sql-server

我想做一个SELECT来获取ID列表,根据这些ID进行更新,然后返回这些记录.

我想这样的东西,我只是不知道语法:

  SELECT WebHookLogIDs = FROM WebHookLog 
                WHERE Processing=0
                    AND Processed=0
                        AND Paused=0
                            ORDER BY FailCount ASC, WebHookLogID DESC

    UPDATE WebHookLog
        SET Processing = 1
            WHERE WebHookLogID IN(WebHookLogIDs)

    SELECT * FROM WebHookLog 
            WHERE WebHookLogID IN(WebHookLogIDs)
Run Code Online (Sandbox Code Playgroud)

Pra*_*ana 6

我认为将数据放入Temp表更好,而不是在其中插入数据

因为在最后你想要返回那些记录,所以你需要使用临时表

DECLARE @Table1 TABLE (WebHookLogIDs INT)

Insert into @Table1(WebHookLogIDs )
SELECT WebHookLogIDs  FROM WebHookLog 
                WHERE Processing=0
                    AND Processed=0
                        AND Paused=0
                            ORDER BY FailCount ASC, WebHookLogID DESC

    UPDATE WebHookLog
        SET Processing = 1
            WHERE WebHookLogID IN( select WebHookLogIDs from @Table1)

    SELECT * FROM WebHookLog 
            WHERE WebHookLogID IN(select WebHookLogIDs from @Table1)
    DROP TABLE @Table1
Run Code Online (Sandbox Code Playgroud)