【发布时间】:2017-07-28 06:54:33
【问题描述】:
我为auto follow 用户创建了一个存储过程,该过程已经在服务器上。在我的数据库中,有 20,000 多个用户。此存储过程使用光标。
我收到此错误从服务器接收结果时发生传输级错误。 (提供者:TCP Provider,错误:0 - 现有连接被远程主机强行关闭。)“
这是我的存储过程。
DECLARE @UserIdF Int
DECLARE @UserId Int
DECLARE csrAutoFollow CURSOR FOR
SELECT TOP (1) userid FROM dbo.users where IsFUser = 1 ORDER BY NEWID()
OPEN csrAutoFollow
FETCH NEXT FROM csrAutoFollow INTO @UserIdF
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE csrauto CURSOR FOR
SELECT userid FROM dbo.Users WHERE IsFUser IS NULL
OPEN csrauto
FETCH NEXT FROM csrauto INTO @UserId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC dbo.FollowUnfollowUser @UserIdF,@UserId,1
FETCH NEXT FROM csrauto INTO @UserId
END
CLOSE csrauto
DEALLOCATE csrauto
FETCH NEXT FROM csrAutoFollow INTO @UserIdF
END
CLOSE csrAutoFollow
DEALLOCATE csrAutoFollow
请让我知道这是否也可以改进。
【问题讨论】:
标签: sql-server stored-procedures cursor