Je veux remplacer le code du curseur de ma procédure stockéeLa meilleure façon de remplacer le curseur dans 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
Quelle est la meilleure façon de remplacer ce curseur pour augmenter les performances ??
Une suggestion?
Vous devrez réécrire la procédure stockée appelée dans le curseur pour opérer sur l'ensemble des données qui sont itérées sur le curseur, au lieu de fonctionner sur une ligne à la fois. Tout le reste serait toujours ligne par ligne, ce qui ne serait pas plus efficace que le curseur utilisé ici ... –
Si vous postez la définition de la procédure stockée, nous pouvons vous proposer des suggestions sur la façon dont cela pourrait être fait ... –
Besoin de plus ** Description ** pour le 'exec INSERT # prod' – Sachin