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/12/2010, 17h36   #1
Membre du Club
 
Inscription : avril 2006
Messages : 181
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 181
Points : 45
Points : 45
Par défaut Recherche d'une valeur dans une table

bonjour,

je suis debutant en PL/SQL, et j'ai besoin d'un traitement.

j'ai deux table A et B, dans la table A y'a des enregistrements et ou la premiere colonne peut contenir plusieurs valeurs, et dans la table B une seule colonne qui ne contient que deux valeurs disant "AA" et "BB".

jusqu'a maintenant j'ai fais un curseur qui me retour tout l'enregistrement de la table A, et j'ai besoin qu'a chauqe fois qu'il va retourner (a travers le curseur) la valeur de la premiere colonne de la table A, il va chercher si cette valeur est existante dans la colonne de la table B.

est ce que quelqu'un peut me dire comment je peux faire cela?

voila le code que j'ai ecris jusqu'a maintenant, et qui ne marche pas:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
DECLARE
Cursor c_ligne_enrg IS
SELECT Colonne1 FROM A;
 
ligne_enrg c_ligne_enrg%rowtype;                           
 
Begin               
 
    FOR ligne_enrg IN c_ligne_enrg loop
        IF ligne_enrg.Colonne1 IN (SELECT Colonne11 FROM B) then  
 
            DBMS_OUTPUT.PUT_LINE('C OK');
 
        else
            DBMS_OUTPUT.PUT_LINE('C KO');
        end IF;
    end loop;
end;
nsqualli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 17h43   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Avec une simple requête :
Code :
1
2
3
4
5
SELECT A.Colonne1,
       case when B.Colonne11 IS NULL then 'C KO' else 'C OK' end AS result
  FROM A
       LEFT OUTER JOIN B
         ON B.Colonne11 = A.Colonne1;
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 17h53   #3
Membre du Club
 
Inscription : avril 2006
Messages : 181
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 181
Points : 45
Points : 45
ce que je veux faire, c'est que pour chaque valeur de colonne1 de la table A, faire un test avec if pour voir si cette valeur existe dans colonne11 de la table B, si oui faire un traitement 1 sinon faire un traitement 2.
sachant que la valeur de colonne 1 on la reccupere a travers un curseur.
nsqualli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 20h13   #4
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
Pas besoin d'un double curseur, utilise la requête de Waldar :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
begin
FOR c IN (SELECT A.Colonne1,
       		case when B.Colonne11 IS NULL then 'KO' else 'OK' end AS result
  	FROM A
       	LEFT OUTER JOIN B
         ON B.Colonne11 = A.Colonne1)
loop
	IF (c.result = 'OK') then 
		--traitement1
	else
		--tratement2
	end IF;
end loop;
end;
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h59   #5
Membre du Club
 
Inscription : avril 2006
Messages : 181
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 181
Points : 45
Points : 45
D'accord, merci bcppp a vous deux
nsqualli 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 01h55.


 
 
 
 
Partenaires

Hébergement Web