Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2210 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Valeur de retour d'une fonction si erreur

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Valeur de retour d'une fonction si erreur

n°876473
MrTonio
Posté le 18-10-2004 à 21:25:11  profilanswer
 

Dans PostgreSQL, je voudrais savoir qu'elle valeur retourne une fonction PL/SQL qui n'a pu correctement se terminée a cause d'une erreur.
Par exemple, dans la fonction suivante, on va imaginer que le INSERT foire parce que la valeur de la clé primaire 'col1' existe deja dans la table.
Ma fonction en censé retourner un type 'boolean'.
 

Code :
  1. BEGIN
  2. INSERT INTO table1 (col1, col2) VALUES ($1, $2);
  3. IF NOT FOUND THEN
  4.    RETURN false;
  5. END IF;
  6. RETURN true;
  7. END ;


Message édité par MrTonio le 18-10-2004 à 21:25:46

---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
mood
Publicité
Posté le 18-10-2004 à 21:25:11  profilanswer
 

n°876572
Arjuna
Aircraft Ident.: F-MBSD
Posté le 18-10-2004 à 22:58:23  profilanswer
 

Elle retournera rien, et une exception sera levée, qui sera ensuite propagée à l'application appelant la fonction.
 
Pour forcer le retour de la fonction, alors tu dois en interne à ta procédure checker les erreurs et te faire un error manager.
 
Cherche "RAISE" comme mot clé, tu trouveras des exemples d'error manager. RAISE permet de lever une exception manuellement, et on le trouve généralement dans les progs bien écrits qui utilisent un error manager ;)

n°876576
Arjuna
Aircraft Ident.: F-MBSD
Posté le 18-10-2004 à 22:59:39  profilanswer
 
n°876586
MrTonio
Posté le 18-10-2004 à 23:05:59  profilanswer
 

merci bien mais il n existe pas une commande particuliere pour empecher de lever les exceptions :??:


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
n°876640
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-10-2004 à 00:03:39  profilanswer
 

Mise à part faire un error manager qui fait rien, non.
 
PS: quand ton erreur est trappée avec le error manager, normalement tu peux ensuite neutraliser l'exception afin de sortir de la fonction sans propager d'erreur à la fonction appelante.

n°877264
MrTonio
Posté le 19-10-2004 à 18:15:19  profilanswer
 

sympa ton lien mais malheureusement Postgres ne reconnait pas le mot clé "EXCEPTION"


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
n°877378
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-10-2004 à 20:29:31  profilanswer
 

c'est balo :D
 
ben... essaie de voir s'il gère un équivalent, logiquement, oui.
 
Sinon, t'as pas d'autre choix que de vérifier que la requête va passer :
 
LOCK DE LA TABLE
SELECT avec comme filtre les nouvelles valeurs de la clé primaire
SI une ligne trouvée :
   @VALRET = FALSE
SINON
   INSERT des données
   @VALRET = TRUE
FIN SI
UNLOCK de la table
RETURN VALRET

n°877379
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-10-2004 à 20:30:29  profilanswer
 

PS: le LOCK est impératif si tu veux être certain que la table ne sera pas mise à jour entre ton select et ton insert. Une transaction ne suffira pas à garantir ce point.

n°877686
MrTonio
Posté le 20-10-2004 à 00:43:21  profilanswer
 

kk
 
mais je crois que je vais pas m embeter avec tout ca :D


---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
n°877734
Arjuna
Aircraft Ident.: F-MBSD
Posté le 20-10-2004 à 09:30:44  profilanswer
 

Bah sinon, logiquement, avec le langage que tu utilises pour appeler ton PL, tu dois pouvoir gérer les exceptions transmises par le SGBD. Tu peux donc les traîter à ce moment :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Valeur de retour d'une fonction si erreur

 

Sujets relatifs
[SQL] Fonction MAXErreur htaccess quand ErrorDocument + RewriteRule
[SQL server] Probleme de fonction de chaine (parsing)Tcl-Tk: fonction trace
Erreur SQLredirection selon une fonction
[ASM][TIME] quelle est la fonction pour récupérer l'heure/min/sec ?fonction html : listbox optimisation?
j'en peu plus c'est quoi l'erreur dans mon progErreur de variables ou quoi ?
Plus de sujets relatifs à : Valeur de retour d'une fonction si erreur


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR