Article
· Avr 10 1m de lecture

Troncature de données ODBC / JDBC

Bonjour, j'espère que ce billet vous aidera.

En résumé : MAXLEN est surtout pertinent pour les connexions odbc/jdbc et vous devez spécifier une valeur appropriée dans vos tables (classes), sinon les données risquent d'être tronquées lorsque vous les interrogez, ou même d'échouer lorsque vous essayez d'insérer des données.
Longue histoire :
L'interface graphique SQL du portail est très indulgente en ce qui concerne le MAXLEN, par exemple vous pouvez insérer des données dans une table où il y a des données plus longues que la taille d'une colonne, si vous utilisez fhir sql les colonnes dans les tables sont la plupart du temps MAXLEN =50 même s'il y a des données beaucoup plus grandes, de plus si vous créez une table à partir d'une sélection (create as select ) la table créée aura MAXLEN=50 les données seront complètes. cependant si vous essayez d'insérer des valeurs plus grandes que 50 via ODBC/JDBC cela échouera.
Faites donc attention à la taille des colonnes / paramètres dans la classe elle-même (et non dans l'interface utilisateur sql).

Eyal

Discussion (1)2
Connectez-vous ou inscrivez-vous pour continuer

Bonjour @Pierre LaFay , je profite de cet article pour partagé un problème que nous avons tout récemment rencontré.  le paramètre MAXLEN comme ci-dessous: 

Property PropertyName As %String (MAXLEN = "");

signifie "pas de limite", c'est à dire la longueur max d'une chaine.

Via le JDBC, ce MAXLEN="" ne semble pas interprété comme en ObjectScript, vous pouvez donc aussi avoir des données tronquées.  Dans ce cas d'utilisation, il vaut mieux utiliser un MAXLEN avec une grande valeur (ex : MAXLEN = 3000000) que "".  Il s'agit probablement que d'un petit bug au niveau du driver, j'ouvrirai peut être un WRC à ce sujet prochainement.