Problème de curseur

Problème de curseur - SQL/NoSQL - Programmation

Marsh Posté le 28-02-2005 à 16:09:38    

Bonjour à vous tous,
 
Je dois faire un top ten des meilleurs ventes 2003, 2004 et 2005, et ajouter les produits trouvés dans un champ 2003 pour 2003. J'ai donc commencé par une requete sql qui va vérifier dans les factures de 2003 si un produit topten existe et le place dans une table temp 2003, je voulais ensuite faire curseur qui lit cette table et ajoute dans le champ 2003 de ma table compagnie les produits.
Car le but finale est d'avoir dans le champ 2003 ID! ID2 ID6
 
ma requête fonctionne avec peu d'enristrement mais des que je teste avec la vraie table qui elle a beaucoup d'enregistrement cela plante, pourtant si je force la fermeture de sql et que je vérifie de nouveau les champs sont complétés.
 
DECLARE @CUST_ varchar(10)  
DECLARE @ITEM_ varchar(50)  
DECLARE cTopTen CURSOR FOR  
SELECT * FROM Temp_TopTen_2003  
 
OPEN cTopTen  
 
FETCH NEXT FROM cTopTen INTO @CUST_, @ITEM_  
 
WHILE (@@FETCH_STATUS <> -1)
BEGIN
 UPDATE    Company
       SET Comp_topten_2003 = {fn RTRIM(Comp_topten_2003) + ' ' + @ITEM_
       WHERE Company.Comp_IdCust = @CUST_  
    FETCH NEXT FROM cTopTen INTO @CUST_, @ITEM_  
END
CLOSE cTopTen  
DEALLOCATE cTopTen
 
Ma connaissance est limité cela doit venir de la :)  
 
Merci

Reply

Marsh Posté le 28-02-2005 à 16:09:38   

Reply

Marsh Posté le 02-03-2005 à 22:36:38    

Comme çà à froid c'est le "SELECT *" qui ne va pas, il faut juste faire un select sur les champs dont tu as besoin, et qui sont déclarés ds le "FETCH NEXT ..."
 
Cà donnerait un truc du genre :

Code :
  1. SELECT ID_Machin, Truc FROM Temp_TopTen_2003 
  2. OPEN cTopTen 
  3. FETCH NEXT FROM cTopTen INTO @ID_Machin, @Truc


 
Mais c'est vraiment à froid, car je n'utilise pas cette syntaxe là pour les curseurs :D
 


Message édité par WhyMe le 02-03-2005 à 22:39:01
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed