Procedure pour dupliquer une ligne
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:
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