rss
Cours pl sql Jour semaine pl sql Pl/sql Sysdate pl sqlPlus
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[PL/SQL] Exception NO_DATA_FOUND

B@|-|@N, le lundi 16 janvier 2006 à 16:11:33
Bonjour à toutes et à tous.

Débutant en PL/SQL avec une doc assez mince et n'ayant pas d'accès au web si ce n'est limité (très limité), je voudrais vous poser une question.

Voilà à quoi ressemble mon code, pour l'instant :

DECLARE
      var1     NUMBER;
      SELECT 1 INTO var1 FROM table1 WHERE champ1='toto';
      var2       table2.champ2%TYPE;
      SELECT champ2 INTO var2 FROM table2;
BEGIN
      IF var1 =1 THEN
            UPDATE table3 blablabla;
            COMMIT;
      END IF;
EXCEPTION
      WHEN NO_DATA_FOUND THEN
           INSERT INTO table3 blablabla2
           COMMIT;
END;


Mon problème vient de l'exception NO_DATA_FOUND. Bon, l'explication du code est la suivante :
    - La requête qui impacte table1 va avoir ou non un enregistrement parmi plusieurs répondant à la clause champ1='toto'.
    - Le résultat de cette requête est envoyée dans la variable var1.
    - L'exception NO_DATA_FOUND va traiter en fait le cas où il n'y aurait pas d'enregistrement répondant à la clause champ1='toto'.

Le truc, c'est que je ne sais pas si l'exception NO_DATA_FOUND va se lever si dans ma deuxième requête, il n'y a pas d'enregistrement ?

En gros, si on définit plusieurs requêtes dans le DECLARE et qu'on lève l'exception NO_DATA_FOUND. Est-ce qu'on va "aller" dans cette exception si n'importe quelle requête ne ramène pas d'enregistrement, ou alors est-ce que je peux clairement affecter cette exception NO_DATA_FOUND à une requête particulière ?

Bahan, compliquééééé X_X Close the world.||.txen eht nepO
Répondre à B@|-|@N  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
yannsar, le lundi 16 janvier 2006 à 16:34:29
logiquement, tu créées un curseur dans ton declare :
cursor toto is
select tata from table1;

cursor titi is
select tutu from table2;

puis dans ton begin, tu ouvres ton 1er curseur par exemple
open toto;
loop
fetch toto into var_toto;
exit when toto%notfound;

close toto;

voilou
Répondre à yannsar

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
B@|-|@N, le lundi 16 janvier 2006 à 16:56:19
Et ça ne va pas provoquer une exception ?

Parce que dans ma requête 1, je ne ramène en fait qu'un seul enregistrement, donc c'est plus ou moins y a un enregistrement ou y en n'a pas.

L'attribut %NOTFOUND couvre ce genre de situation ?

Bahan Close the world.||.txen eht nepO
Répondre à B@|-|@N

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 yannsar, le lundi 16 janvier 2006 à 17:10:28
Pour que ton exception marche, il faut que ta requete soit à l'interieur de ton begin (si mes souvenirs sont bons).

le probleme c'est que tu ne peux faire un select a l'interieur de ton begin qu'en passant par un curseur.

Mais pour repondre à ta question, l'attribut notfound repond bien à cette situation
Répondre à yannsar
Logiciels pertinents trouvés dans les téléchargements
Télécharger Flash Player 9.0.124.0Flash Player - Adobe Flash Player est un moteur d'exécution client permettant d'afficher des animations Flash dans les navigateurs Internet...Catégorie: Web
Licence: Freeware/gratuit
Télécharger Windows Media Player 11Windows Media Player - Le Lecteur Windows Media 11 (WMP) est l'une des fonctionnalités incluses dans Windows Vista et offre des outils pour...Catégorie: Lecteurs vidéo
Licence: Freeware/gratuit
Télécharger Media Player Classic 6.4.9.0Media Player Classic - Media Player Classic est un lecteur vidéo reprenant l'apparence des premières version de Windows Media Player. Son apparence...Catégorie: Lecteurs vidéo
Licence: Open Source
Télécharger GOM Player 2.1.9.3754GOM Player - GOM Player est un lecteur vidéo léger et rapide. Tout comme VLC , il inclue déjà la plupart des codecs nécessaires à la...Catégorie: Lecteurs vidéo
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [PL/SQL] Exception NO_DATA_FOUND »