Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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
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
Hors ligne
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