bonsoir tout le monde,
j'ai besoin de votre aide les gars je me suis planté .....je n'arrive pas a trouvé l'erreur....au fait je veux récupérer les éléments d'un curseur et les mettre dans une table que je vais créer en même temps... voici le code:
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
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
57
 
--Question n° 3
 SET SERVEROUTPUT ON;
 drop table resultat;
 
 declare
 
	Cursor curRepName is select Distinct empno,ename From ventes;
	Cursor curDescrip is select Distinct design From ventes;
	nomRep ventes.ename%TYPE;
	Descrip ventes.design%TYPE;
	qte ventes.litotal%TYPE;
	numRep ventes.empno%type;
	req_CreateTable varchar2(500);
	req_Insert varchar2(500);
 
Begin
 
/* Debut de la requete pour creer la table */
req_CreateTable:='CREATE TABLE RESULTAT (produits Varchar2(30)';
 
Open curRepName;
Loop
	Fetch curRepName into numRep,nomRep;
	Exit When curRepName%NOTFOUND;
	--select distinct ename into v_nomEmp from ventes where empno=numEmp.empno;
	req_CreateTable:=req_CreateTable || '," ' || nomRep || ' "  number(5,2)';
End Loop;
Close curRepName;
req_CreateTable:=req_CreateTable || ')';
/* Fin de la requete */
 
EXECUTE IMMEDIATE req_CreateTable;
dbms_output.put_line(req_CreateTable);
 
/* Insertion des tuples */
 
Open curDescrip;
Loop
	Fetch curDescrip into Descrip;
	Exit When curDescrip%NOTFOUND;
	req_Insert:='insert into resultat values ("' || Descrip || '"';
	Open curRepName;
	Loop
		Fetch curRepName into numRep,nomRep;
		Exit When curRepName%NOTFOUND;
		Select sum(litotal) Into qte From ventes Where empno=numRep And design=Descrip;
		req_Insert:=req_Insert||',"' || qte || '"';
	End Loop;
	Close curRepName;
	req_Insert:=req_Insert||')';
	EXECUTE IMMEDIATE req_Insert;
	dbms_output.put_line(req_Insert);
End Loop;
Close curDescrip;
End;
/
et voila ce qu'il m'affiche....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
CREATE TABLE RESULTAT (produits Varchar2(30)," WARD "
number(5,2)," MARTIN "  number(5,2))
 declare
*
ERREUR à la ligne 1 :
ORA-01741: identificateur de longueur zéro interdit
ORA-06512: à ligne 47
si je mets l'instruction execute immediate en commentaire il me donne le resultat suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
CREATE TABLE RESULTAT (produits Varchar2(30)," WARD "  number(5,2)," ALLEN "
number(5,2)," MARTIN "  number(5,2))
insert into resultat values ("Escarpin", "" ,"13","")
insert into resultat values ("Rangers", "" ,"","6")
insert into resultat values ("basket", "" ,"2","")
insert into resultat values ("soulier", "" ,"","2")
insert into resultat values ("moccassin", "1" ,"2","")
Procédure PL/SQL terminée avec succès.

SQL>