Я пишу простой SQL серверный скрипт для получения идентификатора из таблицы, обновления исходной таблицы и вставки в другую таблицу с помощью курсора.
Есть ли лучший способ использовать без курсора?
Вот мой код с курсором:
DECLARE @CourseDelegateId INT;
DECLARE @UserId UNIQUEIDENTIFIER;
DECLARE Invite_Cursor CURSOR FOR
SELECT CourseDelegateId, UserGuid
FROM [dbo].[CourseDelegate]
WHERE StatusTypeId=1 AND EmailSent = 0 AND [Disabled] = 0
ORDER BY CourseDelegateId
OPEN Invite_Cursor
FETCH NEXT FROM Invite_Cursor INTO @CourseDelegateId, @UserId
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN TRANSACTION
UPDATE [dbo].[CourseDelegate]
SET EmailSent = 1, NotificationTypeId = 1, Modified= GETUTCDATE()
WHERE CourseDelegateId = @CourseDelegateId;
INSERT INTO [dbo].[TrainingNotification]
([CourseDelegateId]
,[UserId]
,[NotificationTypeId]
,[CreatedBy]
,[Created]
,[ModifiedBy]
,[Modified]
,[Disabled])
VALUES(
@CourseDelegateId,
@UserId,
1,
ORIGINAL_LOGIN(),
GETUTCDATE(),
ORIGINAL_LOGIN(),
GETUTCDATE(),
0)
COMMIT
FETCH NEXT FROM Invite_Cursor INTO @CourseDelegateId, @UserId
END
CLOSE Invite_Cursor
DEALLOCATE Invite_Cursor