Bonjour à tous,
J'ai un souci avec une extraction fichier depuis une base Oracle dont le jeu de caractères est en UTF8.
Le format du fichier en sortie nous impose des longueurs fixes pour chaque zone qui sont plus petites que les colonnes de la base correspondantes.
Lorsque je récupère une colonne d'une table, je suis obligé de convertir en WE8MSWIN1252 pour récupérer les accents dans mon fichier et de réaliser un SUBSTR pour coller à la zone fichier.
Mais UTF8 gère les accents sur 2 octets et la manipulation ne marche pas :
exple :
Ca ne marche pas j'ai une erreur ORA-06502: PL/SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 declare text table_oracle.variable%type; =>(varchar2(96) par exemple) text_2 varchar2(16); begin select variable into text from table_oracle where id = xxxxx; text_2 := SUBSTR(CONVERT(text, 'WE8MSWIN1252', 'UTF8'),1,16); dbms_output.put_line ('text : '||text_2); end;
erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit à chaque fois que je rencontre un accent.
Que faire ?
Je pourrais faire un replace ou un translate pour chaque accent mais je voudrais savoir s'il n'y a pas une solution plus simple...
Partager