Problème Fonction avec NULL
Bonjour,
J'ai un petit soucis avec une de mes fonctions.
Elle affiche une adresse en lui donnant un nom, prénom et une date de naissance. Tout vas bien si on donne les 3 données, cependant si je met la date de naissance à NULL, ça ne fonctionne plus.
Quelqu'un peut m'expliquer pourquoi et comment résoudre ce soucis ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
CREATE OR REPLACE FUNCTION adress_locat
( v_nom IN Personne.nom%TYPE,
v_prenom IN Personne.prenom%TYPE,
v_datenaiss IN Personne.datenaiss%TYPE)
RETURN VARCHAR2
IS
v_rue Logement.rue%TYPE;
BEGIN
SELECT rue INTO v_rue
FROM Personne,Signataire,Contrat,Logement
WHERE v_nom=Personne.nom
AND v_prenom=Personne.prenom
AND v_datenaiss=Personne.datenaiss
AND Personne.id=Signataire.idpersonne
AND Contrat.numero=Signataire.numcontrat
AND Contrat.idlog=Logement.idlogement;
RETURN(v_rue);
END adress_locat;
/
VARIABLE g_rue VARCHAR2(50);
EXECUTE :g_rue := adress_locat('Di Toro','Marco','18-02-1980');
PRINT g_rue;
EXECUTE :g_rue := adress_locat('Reventlov','Giskard',NULL);
PRINT g_rue; |
NULL n'est pas égal à NULL (ni différent d'ailleurs)
Bonjour,
NULL n'est pas une valeur, mais l'absence de valeur. Donc v_datenaiss=NULL n'est jamais vrai. Le cas où v_datenaiss est à gérer avec une autre requête avec un v_datenaiss IS NULL.
Cordialement,
Franck