Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Je cite un vieux message car aujourd'hui je découvre cette écriture qui est utilisé dans l'appli ... mais l'appel ne se fait pas correctement car une des variables de la procédure est en Output.
Alors ma question est comment préciser les variables en output avec cette écriture ?
Merci
cantin_jl a écrit:
Utilisation de la procédure
Code: pb
ls_retour = SQLCA.remplit_totalite(gs_poste, & gs_poste,& ls_ent_num, & ls_ent_sfx, & long(ls_ent_rev), & gstr_criteres.fam, & gstr_criteres.prg, & gstr_criteres.cde, & gstr_criteres.cli, & gstr_criteres.di, & gstr_criteres.dpt, & gstr_criteres.ste, & gstr_criteres.dat_deb, & gstr_criteres.dat_fin, & gstr_criteres.qte_tra, & gstr_criteres.hyp_eta, & gstr_criteres.eta_exp, & 'B') if SQLCA.SqlCode <> 0 then ls_message = SqlCa.SqlErrText rollback; end if
Dernière modification par Sailor LVCV (30-03-2009 08:01:54)
Hors ligne
Normalement, dans le code PowerBuilder on indique pas qu'il s'agit d'une variable IN ou OUT, par contre on indique In ou OUT lors de l'écriture de la procédure stockée dans ORACLE.
Exemple :
PROCEDURE ma_procedure( ai_var1 IN OUT integer, al_var2 IN OUT integer )
A vérifier
Hors ligne
Bonsoir chère collègue
Il me semble que les paramètres en output ne doivent pas être déclarés à l'appel de la procédure,
mais par l'intermédiaire d'un FETCH
Exemple:
Déclaration de la procédure stockée sous ORACLE:
PROCEDURE my_proc ( param_1_in IN NUMBER, param_2_in IN VARCHAR2, param_1_out OUT NUMBER, param_2_out OUT DATE );
Appel de la procédure stockée sous PB
Long l_param_1_in String s_param_2_in, s_param_1_out DateTime dt_param_2_out DECLARE my_proc PROCEDURE FOR my_proc( :l_param_1_in, :s_param_2_in ) USING SQLCA; //Liste des variables destinées à alimenter les paramètres en INPUT EXECUTE my_proc; FETCH my_proc INTO :s_param_1_out, :dt_param_2_out; //Liste des variables réceptionnant les paramètres en OUTPUT CLOSE my_proc;
Dans le cas de l'appel d'une fonction ORACLE, c'est le même principe: Le code retour est récupéré par FETCH
Hors ligne
Bon en gros on sait pas vraiment avec cette écriture et ma méthode est la plus adaptable :
Variables en Output au niveau de la déclaration de la procédure stockée et méthode de Foon vénérable collègue ... à un détail près :
DECLARE up_isjourferie PROCEDURE FOR up_isjourferie @date = :ldt_date, @retour = :ll_isjourferie OUTPUT USING SQLCA ; EXECUTE up_isjourferie; FETCH up_isjourferie INTO :ll_isjourferie; CLOSE up_isjourferie;
Hors ligne
Sailor LVCV a écrit:
Foon vénérable collègue ...
J'viens de prendre un sacré coup de vieux
Hors ligne