Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 17/06/2005, 10h10   #1
Membre régulier
 
Avatar de champijulie
 
Inscription : mai 2005
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 147
Points : 92
Points : 92
Par défaut fonction trigger et données

Bonjour,

je suis en train d'importer des données vers une base PostgreSQL mais malheureusement je me retrouve confrontée à une erreur:
Code :
1
2
ERROR:  control reached end of TRIGGER procedure without RETURN
CONTEXTE : PL/pgSQL FUNCTION "pg_fct_t_depot"
J'ai été voir cette fonction pour voir si je trouvais une erreur mais pourtant elle renvoie bien quelque chose. Je vous donne le code de la fonction:
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 FUNCTION ddc_appia.pg_fct_t_depot()
  RETURNS "trigger" AS
$BODY$
Begin
		UPDATE DossierEtat
		SET DateEffective = new.DateDepot
		WHERE ID_Dossier = new.ID_Dossier
		AND ID_Etat = 1;
 
		IF SQL%NOTFOUND then
			INSERT INTO DossierEtat
				(ID_Dossier
				,ID_Etat
				,DateEffective)
			VALUES
				(new.ID_Dossier
				,1
				,new.DateDepot);
		end IF;
 
 		Maj_DatesLimites(new.ID_Dossier ,1 ,new.DateDepot );
 
RETURN new;
exception
when others then NULL;
End;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION ddc_appia.pg_fct_t_depot() OWNER TO postgres;
Je n'arrive pas à savoir d'où ça vient car j'ai bien un return new à la fin de la fonction.
Merci d'avance pour l'aide que vous pourrez m'apporter
champijulie
champijulie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2005, 12h17   #2
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
Pendant l'exécution de ton trigger, si une erreur survient, ça part dans le bloc "exception when others then Null;" et le "return new" n'est jamais exécuté.
Quentin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2005, 14h09   #3
Membre régulier
 
Avatar de champijulie
 
Inscription : mai 2005
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 147
Points : 92
Points : 92
Ok j'ai bien compris mais alors comment faire pour qu'il me rrenvoit quelque chose à chaque fois?
champijulie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2005, 15h47   #4
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
En remplaçant le null par un return (old ou new, selon le cas désiré), par exemple
Quentin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2005, 17h05   #5
Membre régulier
 
Avatar de champijulie
 
Inscription : mai 2005
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 147
Points : 92
Points : 92
Ok...
Merci beaucoup.
A la prochaine .
champijulie
champijulie 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 03h54.


 
 
 
 
Partenaires

Hébergement Web