Bonjour,

jai 2 tables :
- Personnes : où il y a mes données.
- Tampon : vide

Personnes (Nom,Prenom,Adresse,Groupe)
Tampon(TNom,TPrenom,TAdresse,TGroupe)

le champs Personnes.Groupe est un VARCHAR2, il peut avoir comme valeur (A; AB;ABC; ABCD etc...)

Le but est de copier le contenu de personnes dans Tampon et quand Groupe à n lettres, dupliquer la ligne n fois dans Tampon.

Exemples :
on a dans personnes
Martin toto 15 rue du four ABC
Dupond titi 28 av des fleurs C

on veut dans Tampon
Martin toto 15 rue du four A
Martin toto 15 rue du four B
Martin toto 15 rue du four C
Dupond titi 28 av des fleurs C

jai fais la procedure PL/SQL suivante
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
28
29
CREATE OR REPLACE PROCEDURE Dupliquer_lignes IS
CURSOR CCur IS
	SELECT a.Nom,a.Prenom,a.Adresse,a.Groupe FROM Personnes a;
ligne Personnes%ROWTYPE;
n Personnes.Nom%TYPE;
p Personnes.Prenom%TYPE;
adr Personnes.Adresse%TYPE;
g Personnes.Groupe%TYPE;
i NUMBER;
BEGIN
	i:=1;
	OPEN  CCur;
	LOOP;
		FETCH CCur INTO n,p,adr,g;
		EXIT WHEN CCur%NOTFOUND;
		IF substr(trim(a.Groupe))>1 THEN
			FOR i IN 1 .. substr(trim(a.Groupe))
			LOOP;
				INSERT INTO Tampon VALUES(n,p,adr,g);
				i:=i+1;
			END LOOP;
		ELSE
				INSERT INTO Tampon VALUES(n,p,adr,g);
		END IF;
	END LOOP;
	CLOSE CCur;
END;
 
/
Mes Problèmes :

1 - Il y a une erreur de syntaxe que je ne trouve pas
2 - Je ne sais pas comment ecrire "quand on duplique, on prend la 1er Groupe, puis le 2nd etc...
3 - Avez-vous une solution plus simple.

Merci