Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
voilà je rencontre un petit souci pour appeler une procédure Oracle:
Côté PB 11.5.1:
J'ai une zone de saisie multi-lignes qui va contenir une imposante chaine.
Je dois passer cette chaine à une procédure Oracle. L'entrée qui reçoit cette chaine est décrite en CLOB.
string st_flot string st_xml, st_code_retour, st_message st_flot = mle_edinat.text + "~n" DECLARE transpo PROCEDURE FOR trans_pg.APPEL_PR(:st_flot, :st_modele) USING sqlca; EXECUTE transpo ; FETCH transpo INTO :st_xml, :st_code_retour , :st_message; CLOSE transpo ; ...
Côté Oracle 10:
J'ai supprimé tout le code: il ne reste que la valorisation du code retour.
PROCEDURE APPEL_PR( I_clob IN CLOB, I_NOM IN VARCHAR2, O_xml OUT CLOB, O_code_retour OUT VARCHAR2, O_message OUT VARCHAR2) IS BEGIN O_CODE_RETOUR := '0'; EXCEPTION WHEN OTHERS THEN RAISE; END APPEL_bdoc_to_xpression_PR;
Je n'ai pas de message d'anomalie, les variables de sorties ne sont pas valorisées.
En cherchant, j'ai constaté que le problème survient lorsque la chaine d'entrée dépasse les 32767 caractères.
Voilà, si vous avez des pistes...
Merci par avance.
Dernière modification par denisd (27-06-2012 14:16:58)
Hors ligne
Bonjour et
Tout d'abord, pour des raisons de clarté de code: (A appliquer aussi pour le code sql en utilisant la balise code=mssql)
Ensuite, as-tu essayé avec RPCFUNC au lieu de DECLARE?
Sachant que l'aide PB précise que on ne peut pas dépasser des BLOB de plus de 32 512 bits en paramètres
Après, il faudra peut-être envisager de regarder du coté des SELECTBLOB et UPDATEBLOB
Hors ligne