2010-12-14 5 views
0

Avec le code ci-dessous, je voudrais faire un "switch", vérifier une valeur de champ et définir un autre champ en fonction de la valeur. Je dois le faire pour chaque rangée puis c'est dans un curseur. Mais il manque quelque chose ...Utilisation de cas dans un curseur avec T-SQL

Merci pour votre aide

DECLARE @Res int 
OPEN MyCursor; 

FETCH NEXT FROM MyCursor 
INTO @field1, @field2, @field3, @field4 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SELECT 
    CASE @field1 
    WHEN 'A' THEN @Res = 1 
    WHEN 'B' THEN @Res = 2 
    WHEN 'C' THEN @Res = 3 
    WHEN 'D' THEN @Res = 4 
    WHEN 'E' THEN @Res = 5 
    END 

    FETCH NEXT FROM MyCursor 
    INTO @field1, @field2, @field3, @field4 

END 

CLOSE MyCursor; 
+1

Que comptez-vous faire avec @Res? – gbn

Répondre

3

Pour résoudre votre problème immédiat, vous feriez ceci:

SELECT @Res = 
    CASE @field1 
    WHEN 'A' THEN 1 
    WHEN 'B' THEN 2 
    WHEN 'C' THEN 3 
    WHEN 'D' THEN 4 
    WHEN 'E' THEN 5 
    END 

Que voulez-vous faire avec @Res ? Et pourquoi pensez-vous avoir besoin d'un curseur?

+0

Je dois faire des affaires pour chaque rangée. Mais vous pouvez me donner votre avis, je ne suis pas un gars T-SQL, mais prêt à apprendre :) –

+3

@ Kris-I: Ajouter plus d'informations à votre question quant à l'objectif de votre requête, puis gbn ou d'autres peuvent être capable de vous aider. – Tony