[SQL] Comment dire "si null, retourne 0" dans un select ??

Comment dire "si null, retourne 0" dans un select ?? [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 31-01-2003 à 11:41:38    

:hello: ,
 
disons que j'ai la requête d'insertion suivante. La clé primaire de la table est une référence (champs REFVERS0) à incrémenter simplement, sachant que les normes de la société ne permette pas de laisser Oracle gérer lui même les références.
 
EF2MVER5.INSERT=INSERT INTO EF2VER ( REFVERS0, CDAPPLI0, CDPROIDF, NUMVERS0, DTCREVER, HRCREVER, NBTENRVE, NBCHARVE, NBENRDER, DTDERCHG, HRDERCHG, DTEXTVER, HREXTVER ) VALUES ((SELECT MAX(REFVERS0)FROM VEF2VER0)+1 , (SELECT EF2PRO.CDAPPLI0 FROM EF2PRO WHERE EF2PRO.CDPROIDF = ?) , ?, ?, ?, ?, ?, ?, ?, ?, ? , ?, ? )
 
Vous remarquerez le select dynamique qui va cherchez la plus grande référence existante. Mon problème est qu'en cas de table vide, ce select retourne null et que null + 1, ça fait tjrs null et ça plante.
Bref ma question : qqn sait-il comment coder dans le select "si null, retourne 0" ? ça doit être tout con mais on est vendredi et je coince ...

Reply

Marsh Posté le 31-01-2003 à 11:41:38   

Reply

Marsh Posté le 31-01-2003 à 12:29:25    

Essaye ça !
decode (Monselectmax,NULL,0,Monselectmax)
 :pt1cable:

Reply

Marsh Posté le 31-01-2003 à 12:30:07    

nvl...

Reply

Marsh Posté le 31-01-2003 à 15:48:44    

vttman2 a écrit :

Essaye ça !
decode (Monselectmax,NULL,0,Monselectmax)
 :pt1cable:  


 
j'essaie lundi ... merci.

Reply

Marsh Posté le 31-01-2003 à 15:50:15    

ptibonom a écrit :


j'essaie lundi ... merci.


[:totoz] utilise pas un décode pour ca !
 
NVL(champs, valeurSiNull)

Reply

Marsh Posté le 31-01-2003 à 15:50:31    

ptibonom a écrit :


 
j'essaie lundi ... merci.


Ah voui, mais decode, c'est sous Oracle, et ça marche pas par exemple sous DB2. Mais tu as des équivalent avec des CASE( ... ) ou avec des WHEN ... THEN ... ELSE ..., ça dépend du SGBD.


Message édité par tomlameche le 31-01-2003 à 15:50:56

---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 03-02-2003 à 09:23:06    

:hello: ,
 
merci pour toutes les réponses. on est sous oracle donc le decode fonctionnerait. mno collègue a déjà  testé ça SELECT NVL(MAX(REFVERS0),0) et ça a l'air de convenir ...
 
 :jap:

Reply

Marsh Posté le 03-02-2003 à 10:19:49    

euh...c surement bete, mais y aurait pas moyen de definir 0 comme valeur par defaut ?

Reply

Sujets relatifs:

Leave a Replay

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