Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Nous développons une application PowerBuilder qui, entre autres choses, exécute des fonctions et procédures stockées dans une DB ORACLE (Oracle Database 10g Enterprise Edition Release 10.2.0.1.0).
Récemment, nous sommes passés de
PowerBuilder 9.0.3 build 8836
vers
PowerBuilder 12 Classic build 5530
Et certains appels à ces fonctions et procédures stockées ne fonctionnent plus.
Dans le code PowerBuilder, nous avons défini notre propre objet de transaction (hérité de 'Transaction').
Et dans les 'Local External Functions' de notre objet 'Transaction' nous avons le code suivant:
FUNCTION long cpt_exists (string snumcpt, ref Long rbExist) & RPCFUNC ALIAS FOR "pfp_gstcpt_pkg.cpt_exists" FUNCTION long cpt_exists (string snumcpt, REF Long rbExist & , REF string rs_msgkey, REF string rs_msg, REF string rs_msgdb ) & RPCFUNC ALIAS FOR "pfp_gstcpt_pkg.cpt_exists"
Dans la DB ORACLE, nous avons les définitions suivantes pour ces fonctions:
CREATE OR REPLACE PACKAGE Pfp_Gstcpt_Pkg ... FUNCTION cpt_exists ( numcpt_in IN ARI_200_COMPTES.NUMCPT%TYPE, trouve OUT NUMBER, err_cod_out OUT VARCHAR2, err_msg_out OUT VARCHAR2, err_dbg_out OUT VARCHAR2) RETURN INTEGER; FUNCTION cpt_exists ( numcpt_in IN ARI_200_COMPTES.NUMCPT%TYPE, trouve OUT NUMBER) RETURN INTEGER;
Lorsque nous faisons des tests dans l'environnement de développement, tout se passe bien.
Quand nous faisons des tests avec la version déployée (.exe + .pbd) dans l'environnement de test, il semble que PowerBuilder n'arrive plus à appeler la fonction 'cpt_exists' (2 arguments) du package 'Pfp_Gstcpt_Pkg' [Nous avons un système de logging sur la DB ORACLE qui montre que ni la fonction ni le package ne sont exécutés].
Ce qui est bizarre, c'est que PowerBuilder ne déclenche aucune exception.
Et plus bizarre encore, pour d'autres fonctions que la fonction 'cpt_exists', il n'y a pas de problème.
En plus des fichiers '.exe' et '.pbd', nous installons les fichiers suivants lors du déploiement:
- atl71.dll
- Libjcc.dll
- Libjutils.dll
- msvcr71.dll
- msvcp71.dll
- pbdir120.dll
- pbdwe120.dll
- pbdwr120.dll
- pbdwr120.pbd
- pbjag120.pbd
- pbjvm120.dll
- pbo90120.dll
- pbo10120.dll
- pbrtc120.dll
- pbshr120.dll
- pbtra120.dll
- pbvm120.dll
Merci d'avance pour votre aide,
Sophie.
Caractéristiques des environnements de développement et de test
- OS version: Windows XP
- PowerBuilder 12 Classic build 5530
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
- Mode de connexion à la base de données: DBMS=O10 Oracle 10g
- Architecture: Client/Serveur
Hors ligne
Bonjour,
Une piste possible : à partir de la version 10, PB est en unicode par défaut (avant c'était ansi).
Je ne sais pas si c'est pareil pour les RPCFUNC, mais pour une fonction externe on aurait déclaré : ALIAS FOR "pfp_gstcpt_pkg.cpt_exists;ansi"
Hors ligne
Merci pour la piste erasorz.
Je l'ai testée; mais il semble que RPCFUNC ne supporte pas la notation " ALIAS FOR "extname{;ansi}" " qu'on peut utiliser pour les fonctions externes.
Hors ligne