【发布时间】:2013-03-20 18:38:35
【问题描述】:
我想从我的存储过程中替换光标代码
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
替换此光标以提高性能的最佳方法是什么?
有什么建议吗?
【问题讨论】:
-
您将需要重写游标中调用的存储过程,以对游标迭代的整个数据集进行操作,而不是一次操作一行。其他任何东西仍然是逐行的,这不会比这里使用的游标更有效......
-
如果您发布存储过程的定义,我们可以提供有关如何完成此操作的建议...
-
需要
exec INSERT#prod的更多描述
标签: sql sql-server-2008 stored-procedures cursor