|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Développeur informatique Inscription : novembre 2011 Messages : 6 ![]() |
Bonjour,
Je voudrais savoir comment faire pour stocker dans une table de ma base de données informix des textes longs (plus de 2000 caractères), j'ai essayé d'utilisé le type LVARCHAR qui est fonctionne très bien sous informix/unix mais je ne peux pas car utilisant genero studio pour développer quand je recharge le schéma de ma base il m'exclu la table que j'ai crée car le type n'est pas pris en charge... Je me suis donc tourné vers les type TEXT et/ou CLOB que genero semble pouvoir gérer, j'arrive bien à créer ma table, par contre je n'arrive pas à y insérer des données... Pour info j'ai tenté : Code :
INSERT INTO matable(ma_colonne_text) VALUES ('blalblabla...') --> rien Code :
INSERT INTO matable(ma_colonne_text) VALUES (FILETOCLOB('monfichier','server') --> rien |
|
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Eric VercellettoAchitecte Informix SGBD et applications Inscription : octobre 2010 Messages : 79 ![]() |
Bonjour,
tu butes là sur une vieille question dont la réponse n'est pas pas simple à trouver. Enonçons d'abord les principes, puis évaluons les solutions possibles: * LVARCHAR est un type CHAR ( tous les caractères ASCII imprimables ) dont la limite est 32 Ko et qui n'assigne en mémoire et dans ta base que la taille réelle de la données+quelques octets, et qui se manipule dans informix 4GL comme un CHAR * TEXT est un type caractère sans limite réelle de taille ( 2 puissance 31 octets) qui ne se manipule pas vraiment, sauf routine en C ou java qui en explore le contenu "à la main" * CLOB est un type charactère, max 2 puiss 31 octets, qui se manipule avec la fonction du datablade Basic Text Search bts_contains Donc dans l'absolu, le type TEXT s'applique plutôt pour des données "statiques" sur lesquelles tu ne dois pas faire de recherches via sql, ie seulement destinées à l'affichage. Restent LVARCHAR sur laquelle tu peux appliquer le prédicat "MATCHES" et CLOB qui bénéficie de la puissante fonction bts_contains. La question est que ton outil de développement ne reconnait pas le type de variable LVARCHAR. => As tu essayé, dans la définition de ta variable record, de le définir comme CHAR, dont la taille maximale est identique à celle de LVARCHAR? Tu perdrais l'intérêt du gain de place mémoire du LVARCHAR dans ton programme, mais au moins cela devrait marcher ( je n'ai pas testé ). Pour le type TEXT, considère ce que j'ai dit plus haut, c'est bien si tu ne fais pas de recherches SQL sur cette colonne, sinon ça n'a pas grand intérêt. Pour le type CLOB, qui est généralement plus adapté, l'utilisation de FILETOCLOB est la méthode à utiliser. Je pense seulement que Genero ne doit pas comprendre cette instruction au moment du parsing. => As-tu essayé de préparer l'instruction INSERT ? ex: Code :
Ceci devrait en théorie fonctionner, mais je n'ai pas de Genero installé pour tester. Quand tu dis "rien", tu veux dire que l'application ne te retourne même pas d'erreur? Essaye de lancer un onstat -gr sql juste avant de tester, et regarde dans la colonne "SQL ERR" si ta session ne renvoie pas d'erreur. Si quelqu'un a une autre idée ... |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Développeur informatique Inscription : novembre 2011 Messages : 6 ![]() |
Merci pour votre réponse, j'ai essayé d'utiliser le type CHAR au lieu de LVARCHAR et ça à l'air de bien fonctionner, pour le moment je vais rester sur l'utilisation de ce type qui me parait plus simple pour ce que j'ai à faire.
Pour ce qui est de l'utilisation du CLOB j'avais effectivement des erreurs d'exécution liées à l'absence d'un dbspacetemp, j'ai donc décidé de passer mon chemin mais j'y reviendrai sans doute plus tard quand j'aurai un peu plus d'expérience sur informix + 4gl |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Eric VercellettoAchitecte Informix SGBD et applications Inscription : octobre 2010 Messages : 79 ![]() |
Pas de problème!
Effectivement, le CLOB se contruit sur un sbspace + un tempsbspace. Nous verrons cela en temps voulu! @++ Eric |
|
00
|
Copyright © 2000-2013 - www.developpez.com