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 09/02/2012, 18h20   #1
Invité régulier
 
Inscription : janvier 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 6
Points : 6
Points : 6
Envoyer un message via ICQ à othmane1950 Envoyer un message via AIM à othmane1950 Envoyer un message via MSN à othmane1950 Envoyer un message via Skype™ à othmane1950
Par défaut Optimisation de procédure

Bonjour,

Est-ce que ce problème a été résolu ? Car j'ai le même problème sur une procédure qui me prend à peu près une heure pour le insert dans une autre table et le delete depuis la table d'origine...
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
37
38
39
40
41
42
PROCEDURE PR_VERIF_PRESENCE_AGENCE_T_AGC
AS
 
v_code_siege			VARCHAR2(5);
 
CURSOR loop_cursor IS
	SELECT DISTINCT CODE_SIEGE
	FROM   T_AGC T1
	WHERE  T1.CODE_OPERATION <> 'S'
  	AND    NOT EXISTS (SELECT NULL
		   	   FROM   PS_AGENCE_BNP A
			   WHERE  T1.CODE_SIEGE = A.CODE_AGENCE);
 
BEGIN
 
OPEN loop_cursor;
LOOP
FETCH loop_cursor INTO v_code_siege;
EXIT WHEN loop_cursor%NOTFOUND;
 
	INSERT INTO T_ANO
	       (CLETANO, TYP_DONNEES, DATA, DDATE, JOUR, CODE)
	SELECT	SEQ_T_ANO.NEXTVAL ,
		TYP_DONNEES     ,
		TYP_ENREG || TYP_DONNEES || RPAD(ID_INTERNATIONAL,18) || RPAD(NUM_SIRET,14) ||
		CODE_OPERATION || RPAD(CODE_SIEGE,5) || RPAD(ID_SGI,12) || IND_SIEG_PRINC ||
		NTURE_REL_CLTLE || T_AGC.FILLER,
		DATE_TRAIT,
		TO_CHAR(SYSDATE,'YYYYMMDD'),
		'A56'
	FROM   T_AGC, T_ENTETE
	WHERE  CODE_SIEGE = v_code_siege
        AND    TYPE_FICHIER IN ('SAE', 'CCS');
 
	DELETE FROM T_AGC WHERE CODE_SIEGE = v_code_siege;
 
END LOOP;
CLOSE loop_cursor;
 
COMMIT;
 
END PR_VERIF_PRESENCE_AGENCE_T_AGC;
Merci.
othmane1950 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 00h38   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
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 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Il faudrait au moins la description de vos tables (avec les index) présentes dans cette procédures.

Enfin l'idée c'est que votre curseur ne sert à rien, quelque chose comme ceci fera l'affaire :
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
37
38
CREATE OR REPLACE PROCEDURE PR_VERIF_PRESENCE_AGENCE_T_AGC
AS
 
BEGIN
 
    INSERT INTO T_ANO (CLETANO, TYP_DONNEES, DATA, DDATE, JOUR, CODE)
    WITH AGC AS
    (
    SELECT DISTINCT CODE_SIEGE
      FROM T_AGC T1
     WHERE T1.CODE_OPERATION <> 'S'
       AND NOT EXISTS (SELECT NULL
                         FROM PS_AGENCE_BNP A
                        WHERE T1.CODE_SIEGE = A.CODE_AGENCE)
    )
    SELECT SEQ_T_ANO.NEXTVAL
         , ENT.TYP_DONNEES
         , TYP_ENREG || TYP_DONNEES || RPAD(ID_INTERNATIONAL,18) || RPAD(NUM_SIRET,14) ||
           CODE_OPERATION || RPAD(CODE_SIEGE,5) || RPAD(ID_SGI,12) || IND_SIEG_PRINC ||
           NTURE_REL_CLTLE || T_AGC.FILLER
         , ENT.DATE_TRAIT
         , TO_CHAR(SYSDATE, 'YYYYMMDD')
         , 'A56'
      FROM AGC
           INNER JOIN T_AGC
             ON T_AGC.CODE_SIEGE = AGC.CODE_SIEGE
           CROSS JOIN T_ENTETE ENT
     WHERE TYPE_FICHIER IN ('SAE', 'CCS');
 
    DELETE FROM T_AGC
     WHERE CODE_OPERATION <> 'S'
       AND NOT EXISTS (SELECT NULL
                         FROM PS_AGENCE_BNP A
                        WHERE T_AGC.CODE_SIEGE = A.CODE_AGENCE));
 
COMMIT;
 
END PR_VERIF_PRESENCE_AGENCE_T_AGC;
__________________
Email : http://scr.im/waldar
Waldar 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 09h47.


 
 
 
 
Partenaires

Hébergement Web