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 13/05/2005, 15h49   #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 problème de gestion d'erreurs

Bonjour,

Voilà: j'utilise une fonction avec une gestion des erreurs considérant les codes pour pgSQL. Malheureusement, les codes ne sont pas tous reconnus. J'aurai aimé savoir comment remédier à ce problème pour continuer ma migration. Je vous donne une exemple de fonction où la gestion des erreurs n'est pas reconnues:

CREATE OR REPLACE FUNCTION "DdC".lire_erreur()
RETURNS "varchar" AS
$BODY$DECLARE
libelle varchar(160);
num integer;
BEGIN
BEGIN
SELECT INTO num count(*) FROM erreur WHERE id_erreur=p_num;
EXCEPTION
WHEN successful_completion THEN
SELECT INTO libelle id_erreur||':'||libelle From erreur Where id_erreur = p_num;
WHEN OTHERS THEN
libelle := p_num||':ERREUR INDEFINIE';
END;
return libelle;
END; $BODY$
LANGUAGE 'plpgsql' VOLATILE;

Mais si je remplace successful_completion par unique_violation, ça marche...
Merci de me répondre
champijulie
champijulie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 16h31   #2
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
la liste des codes erreurs sont là :

http://www.postgresql.org/docs/8.0/i...-appendix.html

Bon courage
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 16h34   #3
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
tu peux faire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
CREATE OR REPLACE FUNCTION "DdC".lire_erreur()
RETURNS "varchar" AS
$BODY$DECLARE
libelle varchar(160);
num integer;
BEGIN
BEGIN
SELECT INTO num count(*) FROM erreur WHERE id_erreur=p_num;
SELECT INTO libelle id_erreur||':'||libelle FROM erreur WHERE id_erreur = p_num;
EXCEPTION
WHEN OTHERS THEN
libelle := p_num||':ERREUR INDEFINIE';
END;
RETURN libelle;
END; $BODY$
LANGUAGE 'plpgsql' VOLATILE;
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2005, 17h18   #4
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

Kikou,
En fait, si je comprends bien, il y a encore moins de différence entre le pl/sql sous Oracle et le pl/pgsql sous Postgres que dans les versions de Postgre précédentes.
Merci de m'avoir répondu si vite.

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 19h29.


 
 
 
 
Partenaires

Hébergement Web