PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 28-11-2011 13:14:59

SWilbaux  
Membre
Date d'inscription: 28-11-2011
Messages: 2
Pépites: 13
Banque: 0

[en cours] Exécution de code PL/SQL à partir de PowerBuilder 12

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:

Code: pb

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:

Code: sql

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

 

#2 28-11-2011 14:03:26

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [en cours] Exécution de code PL/SQL à partir de PowerBuilder 12

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"


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 28-11-2011 14:32:45

SWilbaux  
Membre
Date d'inscription: 28-11-2011
Messages: 2
Pépites: 13
Banque: 0

Re: [en cours] Exécution de code PL/SQL à partir de PowerBuilder 12

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

 

Pied de page des forums

Propulsé par FluxBB 1.2.22