Bonjour ,
je suis entrain de créer une procédure stocker qui doit faire le comportement suivant :
j'ai une table AbboneOBS et FLUXRECENSEMENTDISE, dont les structures sont :
FLUXRECENSEMENTDISE(id,NUMEROORDRE ,type,valeur);
AbboneOBS(numeroAbbone,fluxRecensement,dateExtarction);la
table AbboneOBS contient la clé de la table FluxRecensement (pour un FluxRecensement on peut avoir plusieurs abboneObs ou rien).
ma procédure doit supprimer les FluxRecensement qui n'ont pas des AbbonesObs,voici le code que j'ai actuellement :
CREATE OR REPLACE procedure test as
cursor CursorRecensementInFlux is select NUMEROORDRE FROM FLUXRECENSEMENTDISE;(je récupère tout les numéro d'ordre de la table FluxrecensementDise).
cursor CursorAbone is select FLUXRECENSEMENT FROM ABONNEOBS;(je récupère tout les ids des flux recensements de la table abbonesOBS).
fluxType FLUXRECENSEMENTDISE.ID%type;
aboneType ABONNEOBS.FLUXRECENSEMENT%type;
Aprés je veux voir pour chaque fluxRecensementDise s' il existe dans abbonesOBs par le code suivant :
begin
loop
open CursorRecensement;
open CursorRecensementInFlux;
open CursorFlux;
open CursorAbone;
loop
fetch CursorFlux into fluxType;
loop
fetch CursorAbone into aboneType;
IF aboneType!=fluxType THEN
GOTO sortie1;
END IF;
exit when CursorAbone%notfound;
END LOOP;
delete FROM FLUXRECENSEMENTDISE WHERE ID = fluxType;
<<sortie1>>
NULL;
exit when CursorFlux%notfound;
END LOOP;
close CursorAbone;
close CursorFlux;
commit ;
mais ça marche pas et ça prend bcp du temps surtout si j'ai n fluxrecensement et m abbonnés.
j'ai pensé a faire l'algorithme suivant :
pour chaque id de fluxRecensementDise faire un select de la table abbonesOBs et voir si le résultat est null, si c'est le cas je supprime le flux, mais j'arrive pas à le coder car je suis vraiment débutant en PL/SQL.
Merci de me donner un bout de code svp et merci d'avance.
Partager