Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

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 22-11-2011 16:52:24

papaye71  
Membre
Date d'inscription: 06-03-2010
Messages: 16
Pépites: 85
Banque: 0

Procedure PL/SQL et tableau

Bonjour à toutes et tous,
je vais essayer d'être aussi clair que possible...

Nous avons des procédures stockées (PL/SQL) sous Oracle avec des tableaux dans les parametres, il semble que pour appeler ces procs depuis PB il faut passer par un package( PKG.GETCUR....) ...premiere question : me le confirmez vous ???

Ensuite est il possible de passer des tableaux à deux dimenssions entre PB et le PL/SQL ???

Merci d'avance pour vos réponses.

Patrick

Hors ligne

 

#2 24-11-2011 12:09:36

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: Procedure PL/SQL et tableau

Bonjour,
voici un petit exemple qui, aux dernières nouvelles, fonctionnait chez nous en Oracle 10g, j'espère que ça t'aidera dans tes recherches.
Pour les tableaux à 2 dims, on n'a pas testé

Specs Oracle
CREATE OR REPLACE PACKAGE EX.EX_TST_PCK AS
    type array_num_type IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
FUNCTION TEST_ARRAY_FU (array_num  array_num_type) RETURN varchar2;     
       
END EX_TST_PCK;

Body
CREATE OR REPLACE PACKAGE BODY EX.EX_TST_PCK IS

FUNCTION TEST_ARRAY_FU (array_num  array_num_type) RETURN varchar2 is
  ls_ret varchar2(500);
  i number;
  begin
    FOR i IN array_num.FIRST ..array_num.LAST LOOP
        ls_ret:=ls_ret||to_char(array_num(i));
    END LOOP;
    return ls_ret;
  end test_array_fu;
     
END EX_TST_PCK;

Déclaration PB (sur l'objet de transaction)
function string TEST_ARRAY_FU(integer anum[]) RPCFUNC ALIAS FOR "~"EX~".EX_TST_PCK.~"TEST_ARRAY_FU~""

Exemple d'appel
string ls_ret
integer ar[]

ar[1]=12
ar[2]=52
ar[3]=454
ls_ret=guo_trans_stdi.TEST_ARRAY_FU (ar);
if guo_trans_stdi.sqlcode<>0 then
    messagebox('erreur',guo_trans_stdi.sqlerrtext)
end if       

Bonnes recherches,

Geo


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#3 24-11-2011 13:36:58

papaye71  
Membre
Date d'inscription: 06-03-2010
Messages: 16
Pépites: 85
Banque: 0

Re: Procedure PL/SQL et tableau

Merci Geo, le problème est plus complexe car nous traitons un tableau à plusieurs dimensions... de toute façon nous allons faire une Proc Chapeau pour traiter ça dans le PL/SQL et limiter les traitement dans PB.
En tout cas merci beaucoup
A bientot
Patrick

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22