Vous n'êtes pas identifié(e).
En fait, j'ai quand même un souci : les champs INOUT ne sont pas modifiés. Ils sont juste fournis en copie dans la variable dans le RETURN ...
CREATE OR REPLACE FUNCTION p_test(test character varying)
RETURNS void AS
$BODY$
DECLARE
LC$test numeric:=0;
cd_ret2 varchar;
BEGIN
CD_RET2:=f_test2 (LC$test);
raise notice 'Valeur : %',LC$test;
return;
END ;
$BODY$
LANGUAGE plpgsql VOLATILE;
CREATE OR REPLACE FUNCTION f_test2(INOUT ma_var numeric)
RETURNS numeric AS
$BODY$
DECLARE
BEGIN
ma_var:=ma_var+1;
END ;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Donne
select p_test (null);
NOTICE: Valeur : 0
NOTICE: Valeur : 0
NOTICE: Retour : 1
Si j'ai plein de variables en entrée, le type en sortie est "record", que je peux récupérer en varchar par exemple.
Mais comment remettre les variables modifiées dans celles que j'avais fournies en paramètre ?
En gros, si je fais un F_calcul (Var1, Var2, Var3, Var4, Var5)
je voudais que mes variables Var1 à Var5 soient modifiées. Sous Oracle, il n'y avait besoin d'aucune manipulation mais je suis prêt à rajouter quelques instructions ...
Merci !!!
Ça fonctionne
Bonsoir,
Voilà ce que j'obtiens :
CREATE OR REPLACE FUNCTION PEC_LEP (LK$TP_E INTEGER,
LK$HR_E INTEGER,
LK$LEP IN OUT LEP,
LK$LG1 IN OUT INTEGER,
LK$LG2 IN OUT INTEGER,
LK$LISTE IN OUT SMALLINT[])
RETURNS INTEGER AS
...
ERREUR: le type de résultat de la fonction doit être record à cause des paramètres OUT
********** Erreur **********
ERREUR: le type de résultat de la fonction doit être record à cause des paramètres OUT
État SQL :42P13
Je débute en pgsql, et je ne saisis pas comment il faut mettre les paramètres ...
bonjour,
Je voudrais migrer une fonction Oracle vers Pgsql.
La fonction a des paramètres in out, dont un tableau d'entiers.
Pour la faire fonctionner sous Oracle, j'avais créé un package pour pouvoir passer un tableau d'entiers dont voici le descriptif :
CREATE OR REPLACE
PACKAGE PCK_LEP IS
TYPE TP$TABLE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
PROCEDURE P_LEP(LK$DT1 VARCHAR2, LK$DT2 VARCHAR2) ;
FUNCTION MAJ_LEP (LK$LEP LEP%ROWTYPE,
LK$LISTE TP$TABLE)
RETURN NUMBER;
FUNCTION PEC_LEP ( LK$TP_E NUMBER,
LK$HR_E NUMBER,
LK$LEP IN OUT LEP%ROWTYPE,
LK$LG1 IN OUT NUMBER,
LK$LG2 IN OUT NUMBER,
LK$LISTE IN OUT TP$TABLE)
RETURN NUMBER;
END;
Le problème que je rencontre est que je ne sais pas comment migrer PEC_LEP, pg n'accepte pas [] smallint en in out ...
Y a t'il une alternative ?