Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels 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 25/05/2011, 17h42   #1
Invité de passage
 
marge marge
Inscription : août 2010
Messages : 13
Détails du profil
Informations personnelles :
Nom : marge marge

Informations forums :
Inscription : août 2010
Messages : 13
Points : 0
Points : 0
Par défaut PL/SQL : Cursor

Bonjour!

Voilà une question que je vais vous poser après avoir eu tant de mal pour comprendre!

J'arrive pas à comprendre le role des cursor dans PL/SQL , et son mode d'emploi!

Merci bcp bcp d'avance!
looking_4truth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 08h28   #2
Membre habitué
 
Avatar de jlm22
 
Homme Jean-Louis
Etudiant
Inscription : décembre 2010
Messages : 199
Détails du profil
Informations personnelles :
Nom : Homme Jean-Louis
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Etudiant

Informations forums :
Inscription : décembre 2010
Messages : 199
Points : 114
Points : 114
Salut je pense qu'il en a des différentes mais moi par exemple je l'utilise pour parcourir un table .

Voici un exemple de traitement (j'ai supprimer des truc pour le simplifier) :

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
43
44
45
46
47
48
49
50
51
 
CREATE OR REPLACE PROCEDURE BDEHISTO AS
 
v_Periodicite   number;
v_table		  	varchar2(50);
v_table_exception varchar2(50);
v_requete		varchar2(2000);
v_verif_purge   varchar2(100);
v_error_code	varchar2(50);
v_error_message	varchar2(100);
l_date_debut 	VARCHAR2(64) := To_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS');
v_cpt number ;
 
cursor C1 IS
	   SELECT Latable,periodicite,ladate, ladate2, jointure
	   FROM histo;
 
C1r	   C1%ROWTYPE;
 
BEGIN    
OPEN C1;
    FETCH C1 INTO C1r;
 
    -- on parcours la table Histo
    while C1%FOUND loop
      -- on verifie que la table n'est pas vide
      v_requete:='SELECT COUNT(*) FROM '||C1r.Latable||'@bdepkg';
      EXECUTE IMMEDIATE v_requete INTO v_cpt ;
 
      v_table_exception := C1r.latable;
 
    -- si =0 on ne met rien a jour
		IF v_cpt>0 then
			IF C1r.jointure='VBL' then
        v_table_exception:=v_table_exception || ' VBL';
        v_requete := 'delete from '||C1r.latable||' where chronocd in ( select chronocd from vbl@bdepkg where to_date(dpre,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
				v_requete := 'insert into '||C1r.latable||' select * from '||C1r.latable||'@bdepkg where chronocd in ( select chronocd from vbl@bdepkg where to_date(dpre,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
 
			end IF;
		end IF;  
    FETCH C1 INTO C1r;
 
    end loop;
CLOSE C1;
end;
en faite je parcours la table et ainsi je peux récupérer certaint champs de la ligne ...
__________________
Pourquoi faire simple quand on peut faire .......... compliqué
jlm22 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 15h39.


 
 
 
 
Partenaires

Hébergement Web