Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Est ce que quelqu'un pourrait m'expliquer succintement comment marche les subroutines?
J'ai besoin de faire appel à une procédure stockée mais j'ai besoin aussi de passer en reférence un des paramètres de cette procédure stockée et mes recherches ont abouties sur le mot clé subroutine.
Voici le code que je voudrais quelque peu modifier pour pouvoir passer par référence la variable il_cde_num
//Si l'editeur n'a pas déjà une ligne dans le bloc note historique, on en insere une nouvelle declare proc_ins_cde procedure for OBI_I_CSI_SORTIE_CDE_ENTETE_v2 @cde_num=:il_cde_num, @cde_pers=:g_str_user.s_username, @cde_nature=:ls_cde_nature, @cde_enleveur=:ls_cde_enleveur, @cde_ad1=:ls_cde_ad1, @cde_ad2=:ls_cde_ad2, @cde_cp=:ls_cde_cp, @cde_ville=:ls_cde_ville, @cde_sortie_date=:ldt_cde_sortie_date, @cde_livr_date=:ldt_cde_livr_date, @cde_obs_prep=:ls_cde_obs_prep, @cde_obs_livr=:ls_cde_obs_livr, @cde_transporteur=:ls_cde_transporteur Using SQLCA; execute proc_ins_cde; If(Sqlca.SQLCode <> 0) Then ls_msg = sqlca.SQLErrText rollback using sqlca; if IsNull (ls_msg) then ls_msg = "" if ls_msg = "" then ls_msg = "Erreur à la création de la commande" MessageBox ("Erreur à la création de la commande", ls_msg) return 1
Merci de bien vouloir m'eclairer sur ce sujet.
Dernière modification par Nephtis (25-09-2007 08:09:08)
Hors ligne
Bonjour,
Regarde ici
Tu auras un exemple de déclaration de subroutine en RPCFUNC (seule façon d'appeler des paramètres de procédures stockées en IN/OUT
depuis PB)
Hors ligne
subroutine GIDE_POPX_CRE_OPERATION(string DSC_PARAM_I,string DATE_BANDEAU_I,string COD_COLL_I, string COD_BUDG_I,ref string IDOPERAT_O,double COD_SECT_INV_I,double COD_SECT_FON_I,string LIC_OPERAT_I, string LIB_OPERAT1_I,string LIB_OPERAT2_I,double IND_AP_I,double IND_HAP_I,string NUM_PROG_AP, double DEPREVTTC_I,string REF_EXTERNE_I,double MNT_PREV_AP_DEP_I,string NUM_SERV_G_I) RPCFUNC ALIAS FOR "~"GIDE~".~"GIDE_POPX_CRE_OPERATION~""
Dans cette ligne je ne comprends pas trop pourquoi il faut utiliser "~" après RPCFUNC
Hors ligne
Ton code est un bout de PowerScript. Ta base de données est certainement configurée pour mettre les noms entre guillemets.
Le caractère d'échappement "~" suivi d'un guillemet permet de coder celui-ci à l'intérieur d'une chaîne de caractères, sans que le guillemet soit interprété comme un début ou une fin de chaîne PowerScript.
Hors ligne
Merci pour l'eclaircissement FMolinas, j'avais completement zapé que le ~ est le caractère d'échapement.
Hors ligne
En regardant le code déjà existant j'ai trouvé des appels a des procédures stockées du genre :
if sqlca.PROC_STOCK (& ref il_cde_num, & g_str_user.s_username, & ls_cde_nature, & ls_cde_enleveur, & ls_cde_ad1, & ls_cde_ad2, & ls_cde_cp, & ls_cde_ville, & ldt_cde_sortie_date, & ldt_cde_livr_date, & ls_cde_obs_prep, & ls_cde_obs_livr) <> 0 then [le code a executer]
Seulement j'ai du créer un version 2 de cette procédure stockée et lorsque je l'apelle via cette commande cela m'affiche le message d'erreur :
Unknown function name : PROC_STOCK_v2
En regardant le code déjà existant j'ai trouvé des appels a des procédures stockées du genre :
if sqlca.PROC_STOCK_v2 (& ref il_cde_num, & g_str_user.s_username, & ls_cde_nature, & ls_cde_enleveur, & ls_cde_ad1, & ls_cde_ad2, & ls_cde_cp, & ls_cde_ville, & ldt_cde_sortie_date, & ldt_cde_livr_date, & ls_cde_obs_prep, & ls_cde_obs_livr) <> 0 then [le code a executer]
Où faut t'il déclarer la liste des procédure que l'on est ammené à utiliser?
Hors ligne
Bonjour Nephtis,
Tu as regardé au niveau de la déclaration des Global External Functions?
Hors ligne
foon a écrit:
Bonjour Nephtis,
Tu as regardé au niveau de la déclaration des Global External Functions?
J'ai regardé dans toutes les pbl du projet et je ne l'ai pas encore trouvé (j'avais fait mes recherches avec le mot clé subroutine)
En recherchant un peut mieux il y a un appel à une fonction d'un object non visuel qui permet de déclarer la procédure qui servira pour l'insertion de données (j'ai pas encore regardé à quoi elle ressemble, j'y retourne tout de suite)
Ce code là était en commentaire, j'approfondi quand même un peu plus ...
Et dans la fonction même il n'y a qu'un commentaire : Function Stub.
Bon je viens finalement de trouver où est ce que les procédures stockées étaient déclarées, dans un object non visuel. Sujet finalement clos
Dernière modification par Nephtis (25-09-2007 10:30:53)
Hors ligne