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 16/09/2008, 15h20   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 87
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 87
Points : 13
Points : 13
Par défaut EXECUTE IMMEDIATE et Compilation sous Oracle Sql Developer

Bonjour,

J'ai ecrit le code suivant sous Oracle Sql Developer, mais je ne sais pas s'il est correct ou non (surtout par rapport au execute immediate) :

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 
CREATE OR REPLACE PROCEDURE chargement() IS
 
  TYPE type_tab_char IS TABLE OF VARCHAR2(60) INDEX BY BINARY_INTEGER ;
		tab_dblinks type_tab := type_tab('db_link_fes','db_link_agadir','db_link_marakech','db_link_meknes','db_link_casa') ;
		i       pls_integer ;
    requete      VARCHAR2(512) ;
 
BEGIN
 
	FOR i IN 0..4 LOOP				
 
		requete := 'INSERT INTO client(numclie, cin_clie, typeclie, formjuri, codepays, libepays, codecate, libecate,
		nom_clie, prenclie, nais, adreclie, nom_conj, prenconj, nombenfa, sexecle, sitfamcl, cin_conj)
 
		SELECT numclie, cin_clie, typeclie, formjuri, codepays, libepays, codecate, libecate, nom_clie, prenclie,
		nais, adreclie, nom_conj, prenconj, nombenfa, sexecle, sitfamcl, cin_conj
 
		FROM com_client@'||tab_dblinks(i);
 
    EXECUTE IMMEDIATE requete;
 
	END LOOP ;
	COMMIT;
	----------------------------------------------------------------------------------------------------
 
	FOR i IN 0..4 LOOP
 
		requete := 'INSERT INTO attribution_client(numedoss, codeoper, codtyppr, attr,
		aff, etatdoss, prixcess, atte)
 
		SELECT numedoss, codeoper, codtyppr, attr,
		aff, etatdoss, prixcess, atte
 
		FROM com_attribution_client@'||tab_dblinks(i);
		EXECUTE IMMEDIATE requete;
 
	END LOOP ;
	COMMIT;
	----------------------------------------------------------------------------------------------------
 
	FOR i IN 0..4 LOOP
 
		requete := 'INSERT INTO dossier_attribution(numedoss, codeoper, codtyppr, attr, 
		aff, etatdoss, prixcess, atte)
 
		SELECT numedoss, codeoper, codtyppr, attr, 
		aff, etatdoss, prixcess, atte
 
		FROM com_dossier_attribution@'||tab_dblinks(i);
    EXECUTE IMMEDIATE requete;
 
	END LOOP ;
	COMMIT;
	----------------------------------------------------------------------------------------------------
 
	FOR i IN 0..4 LOOP
 
		requete := 'INSERT INTO produit(numeprod, codtyppr, codeoper, titrfonc,
		surfprov, surfcada, prixprov, prixdefi)
 
		SELECT com_produit.numeprod@'||tab_dblinks(i)||', com_type_produit.codtyppr@'||tab_dblinks(i)||', com_operation.codeoper@'||tab_dblinks(i)||', com_produit.titrfonc@'||tab_dblinks(i)||', com_produit.surfprov@'||tab_dblinks(i)||', com_produit.surfcada@||'tab_dblinks(i)||', com_produit.prixprov@'||tab_dblinks(i)||', com_produit.prixdefi@'||tab_dblinks(i)||'
 
		FROM com_produit@'||tab_dblinks(i)||', com_type_produit@'||tab_dblinks(i)||', com_operation@'||tab_dblinks(i)||'
 
		WHERE com_produit.codtyppr@'||tab_dblinks(i)||' = com_type_produit.codtyppr@'||tab_dblinks(i)||' AND com_type_produit.codtyppr@'||tab_dblinks(i)||' = com_operation.codtyppr@'||tab_dblinks(i);
    EXECUTE IMMEDIATE requete;
 
	END LOOP ;
	COMMIT;
	----------------------------------------------------------------------------------------------------
 
	FOR i IN 0..4 LOOP
 
		requete := 'INSERT INTO com_operation(codeoper, libeoper, numproj, codeante, numoper, desto)
 
		SELECT codeoper, libeoper, numproj, codeante, numoper, desto
 
		FROM com_operation@'||tab_dblinks(i);
    EXECUTE IMMEDIATE requete;
 
	END LOOP ;
	COMMIT;
	----------------------------------------------------------------------------------------------------
 
	FOR i IN 0..4 LOOP
 
		requete := 'INSERT INTO agence_regionale(codeante, libeante, typeante, username, password, db_link)
 
		SELECT codeante, libeante, typeante, username, password, db_link
 
		FROM agence_regionale@'||tab_dblinks(i);
    EXECUTE IMMEDIATE requete;
 
	END LOOP ;
	COMMIT;
	----------------------------------------------------------------------------------------------------
 
	FOR i IN 0..4 LOOP
 
		requete := 'INSERT INTO echeancier_dossier(numedoss, numligdo, codorgfi, chdo, monteche)
 
		SELECT numedoss, numligdo, codorgfi, chdo, monteche
 
		FROM com_echeanchier_dossier@'||tab_dblinks(i);
    EXECUTE IMMEDIATE requete;
 
	END LOOP ;		
	COMMIT;
	----------------------------------------------------------------------------------------------------
 
	FOR i IN 0..4 LOOP
 
		requete := 'INSERT INTO contrat(numedoss, numecont, prixcess, convispa, datremcl, datremno, datrecno,
			datregdi, dasicocl, conetapa, refecont, matragen, typecont)
 
		SELECT numedoss, numecont, prixcess, convispa, datremcl, datremno, datrecno,
			datregdi, dasicocl, conetapa, refecont, matragen, typecont
 
		FROM com_contrat@'||tab_dblinks(i);
    EXECUTE IMMEDIATE requete;
 
	END LOOP ;
	COMMIT;
END;
/
Quand je lance la compilation, tout ce que j'ai comme message c'est:
"Warning: exécution terminée avec avertissement
PROCEDURE chargement() Compiled."

Comment voir ces avertissements? Je suis habitué à voir une floppée d'errors et de warnings explicite au moindre probleme quand je code en java ou C. Là par contre...je peux ecrire absolument n'importe quoi, ca passe!

Merci d'avance!
abdelhamidem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2008, 15h35   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 459
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 459
Points : 4 226
Points : 4 226
Enlève les sauts de lignes dans la chaine de caractère pour l'execute immediate.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2008, 15h48   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 87
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 87
Points : 13
Points : 13
Ok pour enlever les sauts de ligne... mais ca va etre moche.

Sinon J'ai la version 1.5.1.54.40 ... et en bas il y a "Messages" et "Script Output"

Je peux ecrire
Code :
FOR i IN 0."'ç(è"'ç(è"à(è.4 LOOP
ca passera nickel lol
abdelhamidem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2008, 17h01   #4
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 975
Points : 3 975
pour ce qui est entre quote, ce n'est pas compilé donc tu peux y mettre n'importe quoi.
Donc pour les execute immediate, c'est bien de tester son code avant, ou de l'afficher pour tester...
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h50.


 
 
 
 
Partenaires

Hébergement Web