Holalala, décidemment Oracle et moi, on y arrivera jamais.
Voilà, j’ai obtenu un nouveau drole de bug.
Je fais une mise à jour d’une ligne dans une table qui contient 8 champs de type VARCHAR[b]2/b.
J’utilise la dernière version de Oracle.DataAccess (10.2).
Je tape sur une base 9i.
J’update sur une ligne déjà existante, sans rien modifier.
Ca marche.
Maintenant je modifie le contenu d’une ligne en insérant 10 caractères.
Ca marche.
Toujours la même ligne en insérant > 2000 caractères.
Je me prends une erreur ORA-01461 : une valeur ‘LONG’ ne peut être liée que dans une colonne de type ‘LONG’
Je cherche Google, et la seule réelle solution que je trouve c’est une histoire de différence de langue entre le client et le serveur.
Donc je met la même langue, le même caracters set, mais… rien de nouveau.
Je me dis qu’il y a un problème entre unicode et ascii.
Mais, c’est là que tout se complique, l’erreur apparait depuis n’importe quel des 8 champs.
Je veux dire, si il y a plus de 3-4 champs qui dépasse les 2000 caractères, le suivant se bloque au-dessus de 2000.
Et pourtant, quand un des champs dépasse les 4000 caractères, le résultat ne fout pas d’exception, les données étant simplement tronquées…
Bref, j’avoue que je suis sur le cul.
Serait-ce une taille de buffer dans le transfert entre le client et le serveur ?
Mais je n’ai rien trouvé à ce sujet… A part avoir vu une limite de 2.000.000, limite que j’ai du mal à atteindre, je ne vois rien là.
Vous avez des indices par hasard ?