0

ストアド プロシージャのカーソル コードを置き換えたい

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

このカーソルを置き換えてパフォーマンスを向上させる最良の方法は何ですか??

なにか提案を?

4

2 に答える 2

3

ここにオプションがありますが、私はいくつかの仮定をしました

INSERT INTO prod
SELECT IDOrdre, Quantity,fabnum
FROM prod_ordreplanificationdetail
WHERE fab=@num
  AND ordre=@ord

仮定:

  1. SP INSERT#prod は 1 つのみを実行し、INSERT他のデータ操作は実行しません
  2. SP INSERT#prod は呼び出されたテーブルに挿入し、テーブルprodには 3 つの列しかありません
于 2013-03-20T18:53:58.227 に答える
0

n 番目の行の値を保持することで、CURSOR の代わりに WHILE ループを使用できます。CURSOR に比べてパフォーマンスが良すぎます。必要なものを明確に伝えていただければ、同じ道を歩むことができます。

于 2013-03-28T20:36:56.263 に答える