2009-11-24 7 views
2

Comment gérer les valeurs NULL dans les champs numériques retournés par le curseur dans Select stament, pour gérer efficacement les opérations arithmétiques?Comment gérer les valeurs NULL avec des champs numériques dans le curseur?

+0

Je pense que nous devons voir plus de ce que vous faites pour comprendre comment vous aider. Pourquoi utilisez-vous un curseur? C'est généralement une mauvaise pratique. – HLGEM

+0

C'est un curseur avec quelques enregistrements, je dois iteract avec chaque enregistrement pour filtrer avec les conditions if, elseif, else pour faire différentes opérations aritmétiques, sinon j'ai utilisé plusieurs stalles de sélection, peut-être pour gérer des procédures. – RicardoBalda

Répondre

5
  1. N'utilisez pas de curseurs.

  2. Si vous devez (vraiment?), Vous pouvez utiliser la fonction ISNULL:

    SELECT ISNULL(fieldname, 0) 
    

vous donnera un "0" (zéro) au lieu de NULL.

2

En supposant que vous ne pouvez pas éviter un curseur en premier lieu, je ne comprends pas pourquoi une NULL serait traitée bien différemment une variable que vous le feriez dans une requête - il y a INSULL, COALESCE, CASE WHEN etc.

Une chose intéressante:

DECLARE @v as int -- initialized to NULL 

{ -- loop through a cursor 
FETCH NEXT INTO @v 
} 

ne vous sera pas en mesure de distinguer nécessairement une uninitialized @v du moment où le dernier réglage de la ligne @v était NULL.

Questions connexes