【发布时间】:2023-03-28 04:55:02
【问题描述】:
我正在编写一个简单的 SQL Server 脚本来从表中获取 id 并更新源表并使用游标插入另一个表。
有没有更好的不用光标的方法?
这是我的光标代码:
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
【问题讨论】:
标签: sql-server tsql sql-server-2016