Salut à tous,
J’ai commencé le plsql il ya de cela 1 semaine déjà. Et voici mon problème. J’ai cette procédure plsql qui fonctionne bien. Mais mon problème est que je reçois plus de résultats que prévu.
Soient mes tables :
Table1
Id1| val1|val2
1 200 302
2 104 222
Table2
Id2| nr| bez| bez2
1 1 A Abien
2 2 B Bien
3 3 C Pass
Table3
id1|nr|bez2|bez|id1|ids
je selectionne à l’aide d’un curseur id1 dans la table1, et à l’aide d’un autre curseur2 id1|nr|bez|bez2 dans la table2 pour construire la table3. Dans la table3 je dois me retrouver avec 6 lignes qui sont les suivantes :
Table 3
id1|nr|bez2| bez|id1|ids
1 1 Abien A 1 1
2 2 bien B 1 2
3 3 pass C 1 3
4 1 Abien A 2 1
5 2 bien B 2 2
6 3 pass C 2 3
Mais mon code me retourne 9 lignes, donc le dernier bloc 2 fois au lieu d’une fois. Je ne sais pas ou se trouve ma faute. Aidez moi SVP ?
Est-ce une erreur dans ma boucle ? Je ne vois plus claire. Aidez moi svp ?
Resultat de la requete
id1| nr| bez2| bez| id1| ids
1 1 Abien A 1 1
2 2 bien B 1 2
3 3 pass C 1 3
4 1 Abien A 2 1
5 2 bien B 2 2
6 3 pass C 2 3
7 1 Abien A 2 1
8 2 bien B 2 2
9 3 pass C 2 3
Mon code plsql sous ORACLE 10 g
Merci de vos aides
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Declare c1 table1.id1%TYPE; c2 table2.id2%TYPE; c3 table2.nr%TYPE; c4 table2.bez%TYPE; c5 table2.bez2%TYPE; cursor monCursor is select id1 from table1 order by datum; cursor monCursor2 is select id2, nr, bez,bez2 from table2 from table2 order by schicht_nr; Begin open monCursor; loop fetch monCursor into c1; --2eme Curseur--- open monCursor2; loop fetch monCursor2 into c2, c3, c4, c5; exit when monCursor2%NOTFOUND; insert into table3(id1,nr,bez2,bez,id1,ids) values(table3_seq.nextval,c3,c5, c4,c1,c2); end loop; close monCursor2; exit when monCursor%NOTFOUND; end loop, close monCursor; end;
Fiona
Partager