如何解决为什么这个非常简单的游标会破坏 SQL Server Management Studio?
我在学位表上创建了一个项目,我想为其他 19 所大学复制该记录。我有一个非常简单的游标,但是每次运行它时它都会使 SQL Server Management Studio 完全崩溃。有没有办法重写这个查询(或另一个完全执行相同 INSERT INTO 的查询),使其不会崩溃(并实际执行)?
DECLARE @Colleges VARCHAR(200)
DECLARE DUPLICATE_DEGREE CURSOR FOR
SELECT CollegeID FROM Colleges WHERE CollegeName <> 'Main Office'
OPEN DUPLICATE_DEGREE
FETCH NEXT FROM DUPLICATE_DEGREE INTO @Colleges
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO Degree
(
DegreeName,CollegeID
)
SELECT
DegreeName,@Colleges
FROM Degrees
WHERE DegreeID = 123
END
CLOSE DUPLICATE_DEGREE
DEALLOCATE DUPLICATE_DEGREE
解决方法
您的脚本陷入无限循环,因为您从未移动光标,因此 @@FETCH_STATUS
的值永远不会改变,导致您为同一个大学广告添加相同的记录。在 FETCH NEXT FROM DUPLICATE_DEGREE INTO @Colleges
之后添加 INSERT
。
Jake - 你不需要光标,试试这个:
DECLARE @DegreeName varchar (256)
SET @DegreeName = SELECT DISTINCT DegreeName from Degrees WHERE DegreeID = 123
INSERT INTO Degree (DegreeName,CollegeID)
SELECT @DegreeName,CollegeID
FROM Colleges WHERE CollegeName <> 'Main Office'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。