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 22-11-2011 15: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 11: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 12: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