Bonjour
La fonction PL/SQL ci-dessous, sous Oracle, me permet de formater des caractères dans un support numérique afin d'y extirper certains caractères et permettre un alignement parfait avant impression.
Appelée avec cette chaîne de caractère 'LIQUIDATION PRÊT ECHU', j'ai le message d'erreur suivant : ORA-06502 : PL/SQL : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit.
Sans message d'erreur si j'essai cet ordre : select SUBSTR('LIQUIDATION PRÊT ECHU', 15 , 1) from dual
Merci de votre assistance pour comprendre et solutionner mon problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 FUNCTION filter_swift_char(p_in_str VARCHAR2) RETURN VARCHAR2 is l_SWIFTCharSet Varchar2(100) := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,- ()+/=*&%:?!"<>;~`@#$^_[]{}|'; l_out_str VARCHAR2(32000) := p_in_str; l_CharToChk VARCHAR(1); -- le 1 doit être remplacé par 2 ou 3 pour marcher, et des fois aucune taille ne lui correspond BEGIN FOR l_inx IN 1..NVL(LENGTH(p_in_str), 0) LOOP l_CharToChk := SUBSTR(p_in_str, l_inx , 1); IF INSTR(l_SWIFTCharSet , l_CharToChk) = 0 THEN l_out_str := REPLACE(l_out_str, l_CharToChk); END IF; END LOOP; RETURN l_out_str; END;
Regards.
Partager