Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 13/02/2008, 16h45   #1
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 16
Points : 16
Par défaut erreur de compilation

bonjour a tous

voila j'ai un probleme avec la creation du trigger
j'ai fait ce trigger sur un base oracle 10 XE que je faisait tourner en local

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
 
CREATE OR REPLACE TRIGGER  NEGOCEX32.PLANIF_IU 
AFTER 
INSERT OR UPDATE ON NEGOCEX32.XPLANBPE 
FOR each row
 
DECLARE 
 
date_up VARCHAR2(8);
Anomalie EXCEPTION; 
 
begin 
 
SELECT SDATE_0 INTO date_up FROM NEGOCEX32.XSESSION WHERE SDATE_0 = :NEW.DATEPLAN_0;
 
IF date_up = '' THEN 
 
	RAISE Anomalie;
 
ELSE
 
	UPDATE NEGOCEX32.XSESSION SET STIMESTAMP_0 = CURRENT_TIMESTAMP WHERE SDATE_0 = date_up;
 
END IF;
 
EXCEPTION 
 
WHEN Anomalie THEN 
 
	INSERT INTO NEGOCEX32.XSESSION 
	(STYPE_0,STIMESTAMP_0,SDATE_0) 
	VALUES 
	('PLANIF',CURRENT_TIMESTAMP,:NEW.DATEPLAN_0);
 
WHEN OTHERS THEN 
 
	INSERT INTO NEGOCEX32.XSESSION 
	(STYPE_0,STIMESTAMP_0,SDATE_0) 
	VALUES 
	('PLANIF',CURRENT_TIMESTAMP,:NEW.DATEPLAN_0);
 
end;
/

ça marchait impec et maintenant je la test sur oracle 8i
et il me met " trigger créé avec des erreurs de compilation "

merci pour votre aide
highs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h48   #2
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 972
Points : 3 972
question bête :
Est-ce que le schéma NEGOCEX32 existe et as-tu les bons droits dessus ?
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 17h05   #3
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Mais au niveau logique c’est tellement fort :
  • Soit SDATE_0 est égal :NEW.DATEPLAN_0 et donc date_up est égal à :NEW.DATEPLAN_0
  • Soit SDATE_0 est différente de :NEW.DATEPLAN_0 et après le select into ça va aller dans le bloc d’exception.

Mais le test
Code :
1
2
3
4
 
IF date_up = '' THEN 
 
	RAISE Anomalie;
est complément inutile.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 17h13   #4
Membre actif
 
Étudiant
Inscription : février 2008
Messages : 224
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2008
Messages : 224
Points : 185
Points : 185
Et si tu faisais ca, ca serait plus logique, non ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
CREATE OR REPLACE TRIGGER  NEGOCEX32.PLANIF_IU 
AFTER 
INSERT OR UPDATE ON NEGOCEX32.XPLANBPE 
FOR each row
 
DECLARE 
Anomalie EXCEPTION; 
begin 
UPDATE NEGOCEX32.XSESSION SET STIMESTAMP_0 = CURRENT_TIMESTAMP WHERE SDATE_0 = :NEW.DATEPLAN_0;
 
...
Je ne vois pas l'utilité de ta variable date_up...
Milo59000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 17h55   #5
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 16
Points : 16
Par défaut merci pour vos reponses

ok ok je suis d'accord sur la logique ya des trucks qui serve a rien mais le pb etait plus de l'ordre de la syntaxe je met la modif avec la syntaxe qui marche sous 8i on sais jamais :

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
 
CREATE OR REPLACE TRIGGER NEGOCEX32.PLANIF_IU 
AFTER 
INSERT OR UPDATE ON NEGOCEX32.XPLANBPE 
FOR each row 
 
DECLARE 
 
date_up VARCHAR2(8);
Anomalie EXCEPTION; 
requete_update VARCHAR2(250);
 
begin 
 
 
EXECUTE IMMEDIATE 
'SELECT SDATE_0 FROM NEGOCEX32.XSESSION WHERE SDATE_0 = :NEW.DATEPLAN_0
' INTO date_up;
 
IF date_up = '' THEN 
 
	RAISE Anomalie;
 
ELSE
 
requete_update:= 'UPDATE NEGOCEX32.XSESSION SET STIMESTAMP_0 = CURRENT_TIMESTAMP WHERE SDATE_0 = '||date_up;
 
EXECUTE IMMEDIATE requete_update;
 
END IF;
 
EXCEPTION 
 
WHEN Anomalie THEN 
 
EXECUTE IMMEDIATE '
  INSERT INTO NEGOCEX32.XSESSION 
  (STYPE_0,SDATE_0,STIMESTAMP_0) 
  VALUES 
  ("PLANIF",:NEW.DATEPLAN_0,CURRENT_TIMESTAMP);
';
 
WHEN OTHERS THEN 
 
EXECUTE IMMEDIATE '
  INSERT INTO NEGOCEX32.XSESSION 
  (STYPE_0,SDATE_0,STIMESTAMP_0) 
  VALUES 
  ("PLANIF",:NEW.DATEPLAN_0,CURRENT_TIMESTAMP);
';
 
end;
/
je debute en PL/SQL donc ce trigger est un ramassi de bout de code je confirme
highs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 09h10   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Citation:
Envoyé par highs Voir le message
...mais le pb etait plus de l'ordre de la syntaxe je met la modif avec la syntaxe qui marche sous 8i on sais jamais :

...
Non merci.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 17h13   #7
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 16
Points : 16
Par défaut exxpllddrr nmitu

plus que 2250 messages aussi vide que cela et tu passera expert senior confirmé !!

faut pas prendre la grosse tête dans la vie cher ami , j'ai moi aussi mes languages de prédilection dans lequels je me débrouille plus bien et quand je vois les conneries que les autres ecrivent j'essai de les aider en me rapellant de mes debuts difficile comme nous tous ici !!!
highs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 17h19   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
mnitu n'a donc pas tout à fait tord, la réponse à un code personnel juste pour corriger des erreurs de syntaxe n'a aucun intérêt c'est bien pour ça que les règles interdisent l'usage du forum juste pour des problèmes de syntaxe
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 17h48   #9
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 16
Points : 16
Par défaut certe

mais est-ce que l'on peut considérer qu'il y a une différence entre des erreurs de syntaxe pure et des pb que j'apellerai ' ecriture ' ?? pour moi c'est une peu comme une fonction qu'on utilise dans une version de language et qui serait déprécié dans une version supérieur !!!!
highs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 17h57   #10
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
en tout cas, le minimum aurait été de fournir les erreurs en question... la commande SHOW ERR étant largement rappelée dans ce forum
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 18h06   #11
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 33
Points : 16
Points : 16
Par défaut ok ok merci pour tout qd même

tu viens de m'apprendre le SHOW ERR que je ne connaissait pas !! bon je suis un peu parti au quart de tour mais bon aprés une journée de galéres dans un language que je connais pas ! c'est vrai que l'on peut être un poil irritable
( genre t'as envie de bouffer le bureau )
désolé !!
highs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 20h50   #12
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Pas de problème
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 11h24   #13
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Citation:
Envoyé par highs Voir le message
plus que 2250 messages aussi vide que cela et tu passera expert senior confirmé !!

faut pas prendre la grosse tête dans la vie cher ami , j'ai moi aussi mes languages de prédilection dans lequels je me débrouille plus bien et quand je vois les conneries que les autres ecrivent j'essai de les aider en me rapellant de mes debuts difficile comme nous tous ici !!!
Cher Monsieur Highs,
Ce n’est pas le nombre des étoiles affichées qui confère un statut d’expert.
Mon message a un but précis : celui de signaler que, en fait, tu n’a pas trouve la solution. Sinon des âmes sensibles peuvent penser que il suffit de transformer les requêtes qui ne compilent pas en chaînes de caractères pour les exécuter en dynamique pour résoudre le problème.
Voilà en espérant que maintenant les choses sont claires je te souhaite bon courage pour la suite.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h04.


 
 
 
 
Partenaires

Hébergement Web