Следующий сохраненный процесс был написан некоторое время назад и теперь требует модификации.
Невозможно связаться с первоначальным разработчиком, я посмотрел. Мне этот процесс кажется слишком сложным. Разве это не может быть сделано с простым ОБНОВЛЕНИЕМ? Кто-нибудь может оправдать использование CURSOR здесь?
ALTER PROCEDURE [settle_Stage1]
@settleBatch int
AS
DECLARE @refDate datetime;
DECLARE @dd int;
DECLARE @uid int;
DECLARE trans_cursor CURSOR FOR
SELECT uid, refDate FROM tblTransactions WHERE (settle IS NULL ) AND (state IN ( 21, 31, 98, 99 ))
OPEN trans_cursor
FETCH FROM trans_cursor INTO @uid, @refDate
WHILE @@FETCH_STATUS = 0
BEGIN
SET @dd = DATEDIFF( day, @refDate, getDate())
IF ( @dd >= '1' )
BEGIN
UPDATE tblTransactions
SET settle = @settleBatch WHERE uid = @uid
END
FETCH FROM trans_cursor INTO @uid, @refDate
END
CLOSE trans_cursor
DEALLOCATE trans_cursor