Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2011, 16h32   #1
 
Inscription : juin 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 105
Points : -11
Points : -11
Par défaut Problem valeur retourne = NULL

salut,
Voici mon code qui permet de chercher un livre il doit afficher son référence s'il lé trouve sinon affiche -1
Code :
1
2
3
4
5
6
7
8
CREATE OR REPLACE PROCEDURE verif_livre ( titre_in IN VARCHAR2, auteur_in IN VARCHAR2, type_in IN VARCHAR2, ref_out OUT NUMBER) 
IS 
BEGIN
SELECT * FROM LIVRE WHERE ((TITRE = titre_in) AND (AUTEUR = auteur_in) AND (TYPE = type_in )) ; 
IF SQL%ROWCOUNT = 0 THEN SELECT ref  INTO ref_out FROM LIVRE WHERE ((TITRE = titre_in) AND (AUTEUR = auteur_in) AND (TYPE = type_in ));
ELSE ref_out := -1 ;
END IF;
END;
Dans la dernier cas il va afficher une erreur INTO inattendu, Si j'ajoute un "INTO variable". il va afficher une erreur parce que variable ne peut pas avoir une valeur null. Voici mon code au depart:
Code :
1
2
3
4
5
CREATE OR REPLACE PROCEDURE verif_livre ( titre_in IN VARCHAR2, auteur_in IN VARCHAR2, type_in IN VARCHAR2, ref_out OUT NUMBER) 
IS 
BEGIN
SELECT REF INTO ref_out FROM LIVRE WHERE ((TITRE = titre_in) AND (AUTEUR = auteur_in) AND (TYPE = type_in )) ; 
END;
SVP comment je fait.
chlebta*tsotsi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2011, 17h31   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Citation:
Si j'ajoute un "INTO variable". il va afficher une erreur parce que variable ne peut pas avoir une valeur null. Voici mon code au depart:
SELECT INTO
Citation:
Cet ordre ne doit ramener qu'une ligne sous peine de générer l'exception NO_DATA_FOUND si aucune ligne n'est ramenée ou TOO_MANY_ROWS si plus d'une ligne sont ramenées
Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE PROCEDURE verif_livre ( titre_in IN VARCHAR2, auteur_in IN VARCHAR2, type_in IN VARCHAR2, ref_out OUT NUMBER) 
IS 
BEGIN
SELECT REF INTO ref_out 
  FROM LIVRE 
 WHERE ITRE = titre_in
   AND AUTEUR = auteur_in 
   AND TYPE = type_in;
exception
  when no_data_found then
    ref_out := -1;
END;
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 14/05/2011, 18h04   #3
 
Inscription : juin 2008
Messages : 105
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 105
Points : -11
Points : -11
Un grand up merci
chlebta*tsotsi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h28.


 
 
 
 
Partenaires

Hébergement Web