[oracle] question con sur les clob

question con sur les clob [oracle] - SQL/NoSQL - Programmation

Marsh Posté le 09-12-2002 à 22:13:02    

Voila, lorsque que j essaye d'ajouter un champs de donnée de plus de 4000 bytes ,oracle me renvoi une erreur, (constante chaine trop longue) alors que me semble-t'il un clob peut contenir jusqu a 2 gig de données, comment résoudre ce problème???
C sans doute tout con mais je debute alors merci de m'eclairer :-)  
(articles et url sont les bienvenus)
Merci d'avance.

Reply

Marsh Posté le 09-12-2002 à 22:13:02   

Reply

Marsh Posté le 09-12-2002 à 22:42:48    

je connaissais les blobs mais pas les clobs :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 09-12-2002 à 22:45:21    

Ben c'est clair : "constante chaine trop longue" !
 
C'est pas le champs BLOB qu'est en question, c'est la requête qui ne peut pas contenir des chaînes trop longues.
 
La solution, c'est de passer par des fonction de l'api Oracle qui lisent le contenu à partir d'un fichier, ou encore de binder une variable de ton prog préalablement déclarée dans le type qui va bien toujours avec des fonction de l'api Oracle.
 
Pour plus de détail, tu l'utilise comment Oracle, avec que language ? ? ?
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 22:47:29    

antp a écrit :

je connaissais les blobs mais pas les clobs :??:


 
BLOB : Binary Large OBject.
CLOB : Character Large OBject.
 
C'est presque pareil en fait.
 
C'est un peux comme l'abscence de différence entre un champ BLOB et un champs text en MySql ou Postgresql.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 22:54:30    

Mara's dad a écrit :

Ben c'est clair : "constante chaine trop longue" !
 
C'est pas le champs BLOB qu'est en question, c'est la requête qui ne peut pas contenir des chaînes trop longues.
 
La solution, c'est de passer par des fonction de l'api Oracle qui lisent le contenu à partir d'un fichier, ou encore de binder une variable de ton prog préalablement déclarée dans le type qui va bien toujours avec des fonction de l'api Oracle.
 
Pour plus de détail, tu l'utilise comment Oracle, avec que language ? ? ?
 
 


 
j'utilise perl et coldfusion,tu c m'aider?
tu aurait pas de la doc sur "les fonction de l'api Oracle" paske  :sweat:  (c meme po ske c'est  :( )

Reply

Marsh Posté le 09-12-2002 à 23:00:08    

Heu, merde !
 
Je ne connais ni Perl ni Coldfusion !
 
Les fonctions de l'api, c'est celles que tu utilises pour causer à Oracle.
 
T'as bien des fonctions pour te connecter, exécuter une requête, lire le résultat, non ?
 
Ben c'est çà l'api !
 
Bon, vais chercher un peu et je reviens...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 23:06:07    

ok, mais je pensait que ces fonction etaient totalement independante du sgdb puisque ce sont les meme que pour tout type de base.
(dans les deux language, pour cfml l'interpreteur se charge des acces aux données lui meme, pour perl c un module generique qui contient les drivers pour les principaux sgdb)

Reply

Marsh Posté le 09-12-2002 à 23:11:09    

T'as un lien vers une doc perl qui parle des accès Oracle ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 23:14:13    

Tout ce que j'ai trouvé pour le moment, c'est :
http://www.they.com/doc/local/perl [...] with%20dbi
 
Pas très encouragent, n'est-il pas !


Message édité par Mara's dad le 09-12-2002 à 23:14:32

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 23:16:59    

Reply

Marsh Posté le 09-12-2002 à 23:16:59   

Reply

Marsh Posté le 09-12-2002 à 23:19:33    

Heu, j'ai trouvé çà : http://xmlproj.com/cgi/fom.cgi?_re [...] 33#file_19
 
Je sais pas si çà aide beaucoup.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 23:24:34    

Ben en fait c'est dans la doc du CPAN :
 
http://search.cpan.org/author/TIMB [...] emo_Fields
 
Mais bon, c'est pas très détaillé, et pour les exemples, ben c'est pas çà !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 23:26:23    

bah oué je c pour ca que je suis la  :(  

Reply

Marsh Posté le 10-12-2002 à 00:14:04    

bon ok ,pour binder un variable je viens de capter

Code :
  1. #!perl
  2. use DBI qw(:sql_types);
  3. $db = DBI->connect_cached('DBI:Oracle:base','SCOTT', 'tiger') ;
  4. $t = '...';//une longue chaine de plus de 4000 char
  5. $sth = $db->prepare( "
  6. INSERT INTO test2 (testa) VALUES (?)
  7.  " );
  8. $sth->bind_param(1,$t,SQL_LONGVARCHAR);
  9. $sth->execute();


Mais ca marche pas de nouveau si y as plus de 4000 bytes ,
g le message suivant :
DBD::Oracle::st execute failed: ORA-03113: end-of-file on communication channel
(DBD: oexec error) at test.pl line 16.
 
(et est ce que ce SQL_LONGVARCHAR c normal??, g naievement essayer SQL_CLOB, mais que dal)

Reply

Marsh Posté le 10-12-2002 à 00:22:13    

Et t'as essayé un ORA_BLOB, ou ORA_CLOB ?
 
ORA_BLOB, c'est ce que est utilisé là :  
 
http://xmlproj.com/cgi/fom.cgi?_re [...] 33#file_19


Message édité par Mara's dad le 10-12-2002 à 00:23:29

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-12-2002 à 00:38:07    

je viens d'essayer ca:

Code :
  1. #!perl
  2. use DBI;
  3. use DBD::Oracle qw(:ora_types);
  4. $db = DBI->connect_cached('DBI:Oracle:base','SCOTT', 'tiger') ;
  5. $t = '...';//une longue chaine de plus de 4000 char  
  6. $sth = $db->prepare( "
  7. INSERT INTO test2 (testa) VALUES (?)
  8.  " );
  9. $sth->bind_param(1, $t, {ora_type => ORA_CLOB} );
  10. $sth->execute();


 
mais ca me renvoit toujours la meme erreur  :(

Reply

Marsh Posté le 10-12-2002 à 00:48:41    

Le message "ORA-03113: end-of-file on communication channel" me fait penser que le pb est ailleur en fait. On dirait un genre de timeout...
 
En tout cas, c'est plus un "constante chaine trop longue"
 
Y'a quoi entre ta machine perl et le seveur oracle ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-12-2002 à 00:50:47    

Mara's dad a écrit :

Le message "ORA-03113: end-of-file on communication channel" me fait penser que le pb est ailleur en fait. On dirait un genre de timeout...
 
En tout cas, c'est plus un "constante chaine trop longue"
 
Y'a quoi entre ta machine perl et le seveur oracle ?


 
les deux sont sur la meme machine si c ca que tu veux dire  :??:

Reply

Marsh Posté le 10-12-2002 à 01:18:26    

D'après http://www.oracle-error.com/ora-03113.htm
 
Cette erreur ne semble pas venir de ton CLOB !
 
Les autres requêtes fonctionnent encore ?
 
Essaye de tout redémarrer . . .


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed