繁体   English   中英

在SQL Server 2008中替换游标的最佳方法

[英]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

假设:

  1. SP INSERT#prod仅执行INSERT ,而不进行其他数据操作
  2. SP INSERT#prod插入到名为prod表中,该表中只有三列

您可以通过保持第n行的值来使用WHILE循环而不是CURSOR。 与CURSOR相比,这是非常好的性能。 如果您清楚地说明了您的需求,那么我们可以走同一条路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM