[英]Best way to replace cursor in SQL Server 2008
我想从存储过程中替换光标代码
DECLARE CursorXD CURSOR FOR
SELECT
IDOrdre, Quantity,fabnum
FROM prod_ordreplanificationdetail
WHERE fab = @num
AND ordre = @ord
OPEN CursorXD
FETCH NEXT FROM CursorXD INTO @correctionnumsap, @correctionquantite, @correctionnumfabrication
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC INSERT#prod @idordre = @correctionnumsap,
@quantite = @correctionquantiteneg,
@fabnum = @correctionnumfabrication
FETCH NEXT FROM CursorXD INTO @correctionnumsap, @correctionquantite, @correctionnumfabrication
END
CLOSE CursorXD
DEALLOCATE CursorXD
替换此游标以提高性能的最佳方法是什么?
有什么建议吗?
这是一个选择,但我做了几个假设
INSERT INTO prod
SELECT IDOrdre, Quantity,fabnum
FROM prod_ordreplanificationdetail
WHERE fab=@num
AND ordre=@ord
假设:
INSERT
,而不进行其他数据操作 prod
表中,该表中只有三列 您可以通过保持第n行的值来使用WHILE循环而不是CURSOR。 与CURSOR相比,这是非常好的性能。 如果您清楚地说明了您的需求,那么我们可以走同一条路。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.