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 06/10/2011, 12h53   #1
Invité de passage
 
Homme jean
Consultant informatique
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme jean
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Par défaut PL/SQL boucle for avec un curseur non réussi

Bonjour,

Je débute actuellement un projet en PL/SQL "je suis débutant",
J'ai réussi à écrire à ce jour cette requête mais je n'arrive pas à trouver de solution après avoir bien cherche quand même! .
Le but de cette requête et de récupérer dans la table" MVPV" dans l’attribut "mvpv_nego_nume" une parti de son texte qui permet de récupérer la clef primaire de la table 'ORDB' son attribut clef "ordb_iden" vous trouverez plus bas cette requête indiquais d'une flèche, après cela je doit faire une jointure entre cette attribut et la table "ORDB" sur sa clef primaire afin de mettre à jour la table "MVPV" sur l'attribut "MVPV_MONT_NET".

donc la question serait de savoir pourquoi je n'arrive pas a faire cette manipulation car mes requêtes me semble correct.

merci par avance de votre aide.



Ma requête :
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
52
53
54
55
56
DECLARE
 
 
	ordbiden number:= 0;
	Var_2 number := 0;
	tata NUMBER(12,3) := NULL;
 
CURSOR C_1
 IS
 SELECT EMET_IDEN, mvpv_nume, ord_iden
 FROM 	MVPV
 WHERE	EMET_IDEN=30 
	AND
	MVPV_ORIG='NEG'
	AND
	MVPV_NEGO_NUME LIKE '%ORDB%';
 
 
BEGIN
 
		FOR v_PV IN C_1 
			LOOP
 
			/*ordbiden:=V_PV.mvpv_nume;*/
 
 
			UPDATE mvpv SET mvpv.mont_net = t1 WHERE mvpv.mvpv_nume = C_PV.mvpv_nume AND mvpv.emet_iden=C_PV.emet_iden;*/
 
 
		SELECT 	SUBSTR(mvpv_nego_nume,5,length(mvpv_nego_nume)-2)  INTO Var_2 
			FROM   MVPV ;
 
 
 
 
			UPDATE 	MVPV 
			SET	MVPV_MONT_NET=(
			SELECT  ordb_mont_net_avt_revt_rets FROM ordb WHERE ordb_iden = Var_2 AND ordb.emet_iden=mvpv.emet_iden );
 
 
			/*tata
			WHERE	mvpv_nume = V_PV.mvpv_nume;*/
 
		END LOOP;
 
 
EXCEPTION
 
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line ('Erreur!');
      DBMS_OUTPUT.put_line (SUBSTR (SQLERRM, 1, 255));
 
      ROLLBACK;
 
END;
kimoto77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 16h03   #2
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
Pourquoi faire des curseurs, la requête suivante ne suffit elle pas ?
Code :
1
2
3
4
5
6
7
8
UPDATE MVPV m
   SET m.MVPV_MONT_NET = (SELECT o.ordb_mont_net_avt_revt_rets 
                            FROM ordb o
                           WHERE o.ordb_iden = SUBSTR(m.mvpv_nego_nume,5,length(m.mvpv_nego_nume)-2) 
                             AND o.ordb.emet_iden=m.emet_iden)
 WHERE m.EMET_IDEN = 30
   AND m.MVPV_ORIG = 'NEG'
   AND m.MVPV_NEGO_NUME LIKE '%ORDB%'
PS : balise code, # dans l'éditeur
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 17h52   #3
Invité de passage
 
Homme jean
Consultant informatique
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme jean
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Par défaut merci

merci, ça ma beaucoup aidé, comment met on résolus
kimoto77 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 00h57.


 
 
 
 
Partenaires

Hébergement Web