Dans Sql Server, comment voulez-vous mettre en valeur à partir du curseur dans la table temporaire?

Je suis en train de créer une fonction qui a un curseur. Je veux obtenir le Quanatity de valeur du curseur et de la mettre dans la table temporaire. Mais je n'ai pas réussi à obtenir la valeur et le mettre dans la table temp.

J'ai mis un commentaire où je ne pourrais pas le faire...

voici mon code

alter FUNCTION test(@input VARCHAR(250)) RETURNS Decimal(8, 2) AS BEGIN

DECLARE @rst Decimal(8, 2) SET @rst=0
DECLARE @Temp TABLE (Quantity Decimal(8,2), Price Decimal(8,2))
DECLARE @amount Decimal(8,2)
DECLARE @price Decimal(8,2)

DECLARE CrsOrfLine CURSOR FOR
SELECT AMOUNT FROM LG_001_01_ORFLINE 
 WHERE LINETYPE    = 0 
 AND ORDFICHEREF = (SELECT TOP 1 LOGICALREF FROM LG_001_01_ORFICHE WHERE GUID='EEB44E72-3717-4F5B-8F7E-6A36EB38EA22')
 ORDER BY LINENO_ ASC;

FETCH NEXT FROM CrsOrfLine INTO  @amount
WHILE (@@FETCH_STATUS = 0) 
BEGIN
     INSERT INTO @Temp (Quantity)

     /* HOW AM I SUPPOSED TO ADD IT INTO THE TEMP?????? */
     /* I COULDNT FIGURE THIS PART OUT                  */

FETCH NEXT FROM CrsOrfLine INTO @amount
END /*WHILE*/
CLOSE CrsOrfLine
DEALLOCATE CrsOrfLine
Vous pouvez utiliser INSERT INTO @Temp (Quantity) VALUES (@Amount) - Cependant il s'agit certainement d'une meilleure façon, la performance de cette fonction sera terrible! Semble comme XY Problème. Vous pouvez décrire ce que vous essayez d'atteindre avec votre fonction et d'obtenir des réponses, plutôt que la manière de contourner un problème dans votre solution.
Pourquoi diable êtes-vous à l'aide d'un curseur pour charger une table temporaire?
que suggérez-vous
INSERT...SELECT
Bien que je ne pense pas qu'un curseur est une solution appropriée ici, vous devez également prendre l'habitude de déclarer un curseur approprié pour vos besoins, c'est à dire si vous êtes seulement la lecture à partir de l'utilisation du curseur READ_ONLY, si vous ne jamais utiliser FETCH NEXT, utilisez FORWARD_ONLY etc. Cela évite l'utilisation de la mémoire redondante et peut améliorer considérablement les performances du curseur.

OriginalL'auteur Arif YILMAZ | 2014-07-23