1
我有一个存储过程(下面),它将读取要处理的下一行,将行状态设置为1(正在处理),并返回GUID标识行。这个程序是否达到目标?有没有更好的办法?存储过程获取下一条记录并更新行的状态
CREATE PROCEDURE [PSR].[uspGetNextAssessmentEvent]
AS
SET NOCOUNT ON;
BEGIN TRAN T1;
WITH T AS
(
SELECT TOP (1) TransactionGuid,ItemStatus
FROM [PSR].[PersonAssessmentEventStore]
WHERE ItemStatus=0
ORDER BY CreateDttm
)
UPDATE T
SET ItemStatus = 1
OUTPUT INSERTED.TransactionGuid
COMMIT TRAN T1;
GO
感谢您的反馈意见。使用CTE有什么特别的好处吗? – user2250619 2014-12-19 17:18:06
UPDATE不支持ORDER BY,因此要获取第一行,您需要一个子查询。 CTE提供了更好的子查询体验。 – 2014-12-19 22:48:42