我想替换存储过程中的游标代码
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
替换此游标以提高性能的最佳方法是什么?
有什么建议吗?
答案 0 :(得分:3)
这是一个选项,但我做了几个假设
INSERT INTO prod
SELECT IDOrdre, Quantity,fabnum
FROM prod_ordreplanificationdetail
WHERE fab=@num
AND ordre=@ord
假设:
INSERT
而没有其他数据操作prod
的表格中,表格中只有三列答案 1 :(得分:0)
通过保持第n行值,可以使用WHILE循环而不是CURSOR。与CURSOR相比,它的性能太好了。如果你清楚地告诉你需要什么,那么我们可以走同样的道路。