Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 16/02/2008, 00h02   #1
Membre régulier
 
Avatar de scofield
 
Homme koss
Administrateur de base de données
Inscription : octobre 2006
Messages : 179
Détails du profil
Informations personnelles :
Nom : Homme koss

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : octobre 2006
Messages : 179
Points : 78
Points : 78
Envoyer un message via MSN à scofield Envoyer un message via Skype™ à scofield
Par défaut syntaxe pr tester les corespondances entre occurence tables

Bonjour , ( verssion :DB 9i Forms 10g Toad 9)

j'ai un problème pour tester si des table ont des correspondances dans une autre table sr ma fenêtre(service maintenance)
le code est sur forms mais le probleme est d'ordre syntaxique.
j'arrive pas a trouver la bonne syntaxe pour le dernier test

LES TABLES: PRESTATION VEHICULE >prest_veh** HUILE_PRESTATION VEH >huile_prest** PIECE_PRESTATION_VEHICULE> piece_prest**


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
30
31
32
33
34
35
36
DECLARE 
  v_invalid BOOLEAN;    
      cursor c_d  IS SELECT V.DES_PREST
  FROM PRESTATION V 
  WHERE V.NUM_PREST=:PREST_VEH.NUM_PREST;
begin 
  open c_d ;
  v_invalid:=c_d%notfound;.
  IF v_invalid then NULL;------------------------------------ (1ER TEST.
  else
 
  fetch c_d  INTO :PREST_VEH.PRESTATION;     ---(champ prestation du vehicule)
 
  end IF;
  end; 
  begin
      SELECT   H.DES_HUIL,HP.QT_HP
  INTO
  :PREST_VEH.HUILE,
  :PREST_VEH.QTE_H
  FROM HUILE_PREST HP,HUILE H
WHERE 
  H.CODE_HUIL=HP.NUM_HL 
  AND HP.NUM_COMPM=:PREST_VEH.NUM_COMPM 
  AND HP.N_CHASS=:PREST_VEH.N_CHASS
  AND HP.NUM_PREST=:PREST_VEH.NUM_PREST;
  EXCEPTION 
             WHEN NO_DATA_FOUND     ----------------------(2EM TEST...........        
             THEN NULL;
  end;
  begin    IF EXIST    (SELECT num_compm    <----------------------(3EM Test c'est la que je bloque???
          FROM piec_prest WHERE 
           num_compm=:prest_veh.num_compm
           AND n_chass=:prest_veh.n_chass) then
   INSTRUCTION....{SELECT INTO...
end;
**********************************************FIN
MERCI ENCORE
scofield est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 11h23   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
EXISTS est une commande SQL pas PL/SQL. Tu dois faire le SELECT... WHERE EXISTS et tester le résultat.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 13h12   #3
Membre régulier
 
Avatar de scofield
 
Homme koss
Administrateur de base de données
Inscription : octobre 2006
Messages : 179
Détails du profil
Informations personnelles :
Nom : Homme koss

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : octobre 2006
Messages : 179
Points : 78
Points : 78
Envoyer un message via MSN à scofield Envoyer un message via Skype™ à scofield
Par défaut tjr aussi rapid :)

merci beaucoup!
donc, si j'ai bien saisi je pourrais peut etre aussi.
faire une insertion(instruction) where existe des piece dans la prestation

Genre:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
..........             
                                                   -------test 3
SELECT P.DES_PIEC,PP.QT_PM
  INTO :PREST_VEH.PIECE,:PREST_VEH.qte_p
  FROM PIECE P,PIECE_PREST PP
WHERE EXISTS (SELECT num_compm    
          FROM piec_prest
   WHERE 
           num_compm=:prest_veh.num_compm 1
           AND n_chass=:prest_veh.n_chass 2
           AND num_prest=:prest_veh.num_prest 3)
AND
  WHERE P.REF_PIEC=PP.NUM_PIECE
  AND   PP.NUM_COMPM=:PREST_VEH.NUM_COMPM----1
  AND   PP.N_CHASS=:PREST_VEH.N_CHASS-------2
  AND   PP.NUM_PREST=:PREST_VEH.NUM_PREST----3;
je sais je dois enlever le deuxième where mais sinon
tout ce dont j'ai envie c'est de tester si il ya des pieces utilsés dans la prestation du véhicule si c'est pas le cas
je ne rempli pas les champ (:piece :Qt.piec) vue que y a rien!(then null)*

NB : au niveau des jointure 1 2 et 3 je doit fusioner , ou suprimer ceux d'en bas /ou ceux de la sou requete ?
scofield est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 14h15   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
attention à la gestion du NO_DATA_FOUND aussi
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2008, 02h24   #5
Membre régulier
 
Avatar de scofield
 
Homme koss
Administrateur de base de données
Inscription : octobre 2006
Messages : 179
Détails du profil
Informations personnelles :
Nom : Homme koss

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : octobre 2006
Messages : 179
Points : 78
Points : 78
Envoyer un message via MSN à scofield Envoyer un message via Skype™ à scofield
OK boss
des Que je teste je rend les résultat!
Merci
scofield est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h32.


 
 
 
 
Partenaires

Hébergement Web