Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 09/07/2010 09:36:26
- mortimer.pw
- Membre
Fonction avec paramètre OUT
Bonjour,
Je travaille sur une BD 8.4 sous Cent-OS.
Je dois réécrire des Fonctions Oracle en Pl/PgSQL.
Exemple :
FUNCTION Get_Doc(MODE IN VARCHAR2,ERREUR OUT VARCHAR2,DOC OUT VARCHAR2) RETURN NUMBER IS
retour NUMBER:=-1;
BEGIN
IF NOT(Ctrl(MODE,ERREUR,DOC)) THEN
RAISE_APPLICATION_ERROR(-20001,ERREUR);
ELSE
retour:=1;
END IF;
RETURN(retour);
EXCEPTION
WHEN OTHERS THEN
ERREUR:=SQLERRM;
RETURN(retour);
END Get_Doc;
En consultant la Doc, j'ai vu qu'il n'est pas possible d'écrire une Fonction avec des paramètres en OUT et de renvoyer une valeur.
Comment peut-on procéder ?
Merci pour les réponses.
Hors ligne
#2 09/07/2010 10:09:40
- Marc Cousin
- Membre
Re : Fonction avec paramètre OUT
Bonjour,
Effectivement, c'est soit des paramètres OUT, soit une valeur : les paramètres OUT déterminent le type de retour de la fonction, c'est à dire que si il y a plusieurs paramètres, la fonction retourne un record de ces paramètres.
On ne peut donc procéder que d'une de ces deux façons, ce qui veut malheureusement dire pour vous modifier le prototype de la fonction, donc ses appels.
Marc.
Hors ligne
#3 09/07/2010 10:35:08
- mortimer.pw
- Membre
Re : Fonction avec paramètre OUT
Bonjour Marc,
La réponse est claire.
Merci.
Hors ligne
#4 09/07/2010 10:48:59
- Marc Cousin
- Membre
Re : Fonction avec paramètre OUT
Désolé de ne pas avoir mieux à proposer
Marc.
Hors ligne
#5 09/07/2010 11:03:22
- mortimer.pw
- Membre
Re : Fonction avec paramètre OUT
Rebonjour,
Dans le cas du RECORD, comment exploiter les valeurs en retour de Fonction ?
Merci.
Hors ligne
#6 09/07/2010 11:11:12
- Marc Cousin
- Membre
Re : Fonction avec paramètre OUT
Comme un record sur select de table : vous récupérez un record, dont vous accédez aux champs. Par exemple, si les paramètres OUT sont sortie1 et sortie2, de la fonction fonction1, vous faites dans la fonction appelante :
monrecord:=fonction1();
les valeurs récupérées seront
monrecord.sortie1 et monrecord.sortie2
Marc.
Hors ligne
#7 09/07/2010 11:12:29
- mortimer.pw
- Membre
Re : Fonction avec paramètre OUT
Super réactivité
Merci Marc et bon week-end.
Hors ligne
#8 09/07/2010 13:22:54
- gleu
- Administrateur
Re : Fonction avec paramètre OUT
Il y avait un post sur le forum que je n'arrive plus à retrouver où on utilisait un paramètre personnalisé. Ça demande de pouvoir modifier une fois le fichier de configuration, mais après, on peut avoir à peu près la même chose que Oracle.
Guillaume.
Hors ligne
#9 09/07/2010 14:29:10
- Marc Cousin
- Membre
Re : Fonction avec paramètre OUT
gleu : je n'ai pas retrouvé le post non plus. Mais de mémoire, la nuance est que ce paramètre personnalisé est une variable de session (donc globale à la session). Ce qui rend sa manipulation un peu dangereuse tout de même.
Marc.
Hors ligne
#10 09/07/2010 15:13:40
- gleu
- Administrateur
Re : Fonction avec paramètre OUT
Je ne vois pas en quoi elle serait dangereuse. Mais bon, ce qui est plus embêtant, c'est que, dans tous les cas, il faut changer l'applicatif.
Guillaume.
Hors ligne
#11 09/07/2010 15:16:38
- Marc Cousin
- Membre
Re : Fonction avec paramètre OUT
Parce qu'une variable globale peut être modifée par un autre chemin dans le code que celui que tu as devant les yeux. Par exemple si une fonction appelle une sous fonction qui utilise la même variable globale. Voire même la même fonction, dans un cas de récursion par exemple.
Marc.
Hors ligne
#12 09/07/2010 15:36:23
- gleu
- Administrateur
Re : Fonction avec paramètre OUT
Ah oui, pas bête.
Guillaume.
Hors ligne
Pages : 1