Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

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 10-09-2007 13:01:49

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

[RESOLU] Appel d'une procedure stockée

J'ai déclaré une procedure stockée dans mon objet de tansaction en locale external function.
Je passe un paramètre par référence celui-ci m'est retourné en etant tronqué.
Je travaille en pb10.5 et oracle 8i

Est-ce que quelqu'un a une idée ?

Dernière modification par ossarc (11-09-2007 13:19:03)

Hors ligne

 

#2 10-09-2007 13:04:19

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel d'une procedure stockée

Bonjour,

Pourrais-tu nous envoyer la déclaration sous PB et la déclaration sous PL/SQL de la procédure en question?

Merci d'avance


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 10-09-2007 13:11:14

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

Re: [RESOLU] Appel d'une procedure stockée

sous pb:

Code: pb

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~""


sous oracle:

Code: sql

create or replace procedure gide_popx_cre_operation (
  Dsc_Param_i    In Varchar2,
  Date_Bandeau_i    In Varchar2,
  Cod_Coll_i    In Varchar2,
  Cod_Budg_i    In Varchar2,
  IdOperat_o    Out Varchar2,
  Cod_Sect_Inv_i    In Number,
  Cod_Sect_Fon_i    In Number,
  Lic_Operat_i    In Varchar2,
  Lib_Operat1_i    In Varchar2,
  Lib_Operat2_i    In Varchar2,
  Ind_AP_i    In Number,
  Ind_HAP_i    In Number,
  Num_Prog_AP    In Varchar2,
  DePrevTTC_i    In Number,
  Ref_Externe_i    In Varchar2,
  Mnt_Prev_AP_Dep_i  In Number,
  Num_Serv_G_i    In Varchar2
) Is
Num_Prog_AP_io varchar2(10);
delegat_cp_io varchar2(1);
num_prg_d_io varchar2(10);
idoperat_io varchar2(8);
begin
num_prog_ap_io := Num_Prog_ap;
delegat_cp_io := 'H';
  op.popx_cre_operation(  Dsc_Param_i  ,
  Date_Bandeau_i,
  Cod_Coll_i,
  Cod_Budg_i,
  IdOperat_io,
  'D',
  null,
  2,
  Cod_Sect_Inv_i,
  Cod_Sect_Fon_i,
  Lic_Operat_i,
  Lib_Operat1_i,
  Lib_Operat2_i,
  Ind_AP_i,
  Ind_HAP_i,
  Num_Prog_AP_io,
  0,
  0,
  1,
  1,
  null,
  null,
  null,
  null,
  null,
  null,
  null,
  null,
  null,
  null,
  Ref_Externe_i,
  null,
  null,
  null,
  1,
  '1',
  null,
  null,
  0,
  0,
  0,
  0,
  Num_Serv_G_i,
  'N' ,
  1,
  0,
  delegat_cp_io,
        null,
  num_prg_d_io) ;
  IdOperat_o := IdOperat_io;
end;


Hors ligne

 

#4 10-09-2007 13:16:42

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel d'une procedure stockée

Ok, merci pour les infos.
Tu passes par ODBC ou en natif?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#5 10-09-2007 13:24:17

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

Re: [RESOLU] Appel d'une procedure stockée

en natif, c'est sqlnet

Hors ligne

 

#6 10-09-2007 13:25:27

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel d'une procedure stockée

Juste une question: c'est tronqué à combien? parceque ta variable idoperat_io est un varchar2(8)


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#7 10-09-2007 13:30:31

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

Re: [RESOLU] Appel d'une procedure stockée

Il ne me renvoie que 7 caractères

Hors ligne

 

#8 10-09-2007 13:50:43

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel d'une procedure stockée

Bon, je suppose que quand tu testes idoperat_io au niveau de la sortie de procédure PL, tu as bien 8 caractères.

Tu as essayé en appelant ta procédure directement dans PB, sans passer par une external (DECLARE, EXECUTE, et FETCH sur le paramètre en Output)?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#9 11-09-2007 11:36:31

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

Re: [RESOLU] Appel d'une procedure stockée

Le pb c'est que cette procedure marche bien en oracle 7 et 9 et ne plante que pour la version 8. A priori c'est le passage d'oracle à pb qui ne se fait pas correctement.

Hors ligne

 

#10 11-09-2007 11:39:33

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel d'une procedure stockée

Bonjour,

Tu as essayé en utilisant la connexion native Oracle 7?
Nous utilisions le driver natif Oracle 7.5 pour nous interfacer avec la 8, et ça marchait bien...


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#11 11-09-2007 11:40:16

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Appel d'une procedure stockée

Salut,

Avant l'appel de ta proc tu dois "sizer" ta string dans PB en faisant un space(n) où n est la taille maxi de ta chaine dans Oracle.

Exemple si tu veux gérer une chaine allant jusqu'à 100 carac dans oracle alors fait un ma_chaine = space(100) avant l'appel de la proc....

Cela vient du fait qu'a priori Oracle dimensionne les varchar2 passés par référence lors de leur première affectation.

Ce cas se présente souvent quand le développeur utilise la même variable chaîne pour gérer le message d'erreur par référence de plusieurs procédures appelées les unes après les autres. Lorsque la première proc plante la taille du message dans la seconde sera tronqué à la taille du message de la première proc.


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#12 11-09-2007 11:44:10

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

Re: [RESOLU] Appel d'une procedure stockée

la chaine que je passe est initialiser à space (8) et en pb10.5, on peut pas s'interfacer avec la 7

Hors ligne

 

#13 11-09-2007 11:50:10

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Appel d'une procedure stockée

ossarc a écrit:

la chaine que je passe est initialiser à space (8) et en pb10.5, on peut pas s'interfacer avec la 7

Et ta chaîne est tronquée avant le huitième caractère ?


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#14 11-09-2007 11:53:45

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

Re: [RESOLU] Appel d'une procedure stockée

La première fois il est troqué à 7 caractères et si on apelle cette proc +sieurs fois successivement,il supprime un caractère à chaque fois

Hors ligne

 

#15 11-09-2007 11:54:45

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel d'une procedure stockée

pour recuperer les variables en pl/sql

Code: sql

Variable A_1 number;

execute P_XXX('A', '04-SEP-06',XXX , :A_1 );

Print A_1 ;

Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#16 11-09-2007 12:39:00

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel d'une procedure stockée

Bon, à tout hasard, tu as bien le paramétrage suivant au niveau de ta config BDD?

DbParm       -->  ...,DisableUnicode=1


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#17 11-09-2007 12:57:56

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

Re: [RESOLU] Appel d'une procedure stockée

ou est-ce que l'on parametre le unicode ?

Hors ligne

 

#18 11-09-2007 12:59:55

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Appel d'une procedure stockée

C'est au niveau du paramétrage de l'objet transactionnel SQLCA:

SQLCA.DBParm = "DisableUnicode=1"

Par défaut, PB 10.2 et 10.5 le mettent à 0, et ça pose des problèmes de passage de données avec Oracle...


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#19 11-09-2007 13:18:28

ossarc  
Membre Geek
Date d'inscription: 17-08-2007
Messages: 32
Pépites: 145
Banque: 0

Re: [RESOLU] Appel d'une procedure stockée

Super Info, ça marche, il fallait  rajouter 'DisableUnicode=1' dans le dbparm

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22