Azure SQL Server-我继承了一个异步运行的存储过程,由无限运行的Azure服务结构服务触发:
PROCEDURE Sources.ForIndexing
(@SourceId BIGINT)
AS
BEGIN
SET NOCOUNT ON
DECLARE @BatchId uniqueidentifier
SELECT @BatchId = CaptureBatch
FROM [Data].[Raw]
WHERE CaptureId = (SELECT MAX(CaptureId)
FROM [Data].[Raw]
WHERE SourceId = @SourceId)
UPDATE [Data].[Raw]
SET [Status] = 501
WHERE SourceId = @SourceId
AND CaptureBatch = @BatchId
END
GO
在这个
Data.Raw
桌子
CaptureId
是主键并自动递增。此表中的记录按
SourceId
CaptureBatch
. 一个
源ID
可以有几个
CaptureBatch's
. 此过程的第一部分查找最新的
捕获批处理
通过查看
MAX
俘虏ID
一个给定的
UPDATE
语句然后设置
Status
把那些记录列到501。
状态
此过程迭代的任何给定记录的列的值为1,do
执行
记录在案的声明。
我想这可能很简单,只需修改SELECT部分:
WHERE CaptureId = (SELECT MAX(CaptureId)
FROM [Data].[Raw]
WHERE SourceId = @SourceId
AND Status <> 1)
状态
那不是1
一
马克斯
俘虏ID
,对吗?我可能想得太多了,但似乎我需要一些
IF