Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1662 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Insérer du texte dans BD oracle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Insérer du texte dans BD oracle

n°589024
korrigan
Posté le 12-12-2003 à 12:00:57  profilanswer
 

Bonjour,
 
Je voudrais insérer du texte dans un champ VARCHAR2 d'une BD Oracle mais j'obtiens le message d'erreur suivant :
"OCIStmExecute: ORA-01461: une valeur 'LONG' ne peut être liée que dans une colonne de type 'LONG'"
 
Est ce que quelqu'unà déja eu le même type de pb ?  
Je ne sais pas s'il y a moyen avec PHP que je fasse une conversion de mon texte avant de l'inserer dans la BD ou s'il faut carrémment que je change le type de mon champ VARCHAR2 ?
 
Merci

mood
Publicité
Posté le 12-12-2003 à 12:00:57  profilanswer
 

n°589079
Vinx
Posté le 12-12-2003 à 13:06:25  profilanswer
 

Et en fait ajoutant TO_CHAR(ta_variable) ?

n°589115
korrigan
Posté le 12-12-2003 à 14:14:07  profilanswer
 

Vinx a écrit :

Et en fait ajoutant TO_CHAR(ta_variable) ?


 
J'ai vu sur le net que j'étais obligé d'utiliser un CLOB pour insérer mon texte. Par contre ça ne marche pas non plus j'ai toujours le même message d'erreur  
 
Voici mon code :  
$update = OCIParse($conn,"UPDATE pages SET pa_texte= :texte where Ru_ID=$ru_id" );  
OCIBindByName($update,":texte",&$texte,-1);  
OCIExecute($page);

n°589143
Mara's dad
Yes I can !
Posté le 12-12-2003 à 14:59:30  profilanswer
 

Et un simple :
$update = OCIParse($conn,"UPDATE pages SET pa_texte= '$texte' where Ru_ID=$ru_id" );  
OCIExecute($page);
Cà ne marche pas ?
 
 
Sans oublier les ' autour de $texte...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°589144
Mara's dad
Yes I can !
Posté le 12-12-2003 à 15:01:09  profilanswer
 

Heu au fait ce serait pas plutôt OCIExecute($update); à la plade de OCIExecute($page); ? ? ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°589148
korrigan
Posté le 12-12-2003 à 15:11:37  profilanswer
 

Mara's dad a écrit :

Heu au fait ce serait pas plutôt OCIExecute($update); à la plade de OCIExecute($page); ? ? ?


 
Si si c'est une erreur de frappe de ma part

n°589156
Mara's dad
Yes I can !
Posté le 12-12-2003 à 15:21:09  profilanswer
 

Résultat ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°589163
korrigan
Posté le 12-12-2003 à 15:25:55  profilanswer
 


 
mon code était "bon" si on peut dire :) c'etait mon post qui ne l'était pas donc résultat ça ne marche toujours pas
 
j'ai essayé autre chose mais cela insère un champ vide dans ma base
$lob = OCINewDescriptor($connect, OCI_D_LOB);
$sql= "UPDATE pages SET Pa_Texte=EMPTY_CLOB() WHERE Ru_ID=$ru_id RETURNING Pa_Texte INTO :texte";
$page = OCIParse($connect, $sql);
OCIBindByName($page, ":texte", &$lob, -1, OCI_B_CLOB);
OCIExecute($page,OCI_DEFAULT);
OCICommit($page);

n°589186
Mara's dad
Yes I can !
Posté le 12-12-2003 à 15:39:07  profilanswer
 

Ton $lob, il est si gros que çà ?
Quelle taille exactement ?
Je croyais que c'était un VARCHAR2 ton champs ! Limité à 255 quoi.
 
Le returning, c'est pas utilisé pour mettre à jour ton champs. C'est utilisé pour récupérer un champs autoincrémenté par exemple par un trigger ou pour un rowid.
 
T'es certain que tu dois utiliser un CLOB, parce-que c'est méga-chiant ce truc. Doc : DBMS_LOB.WRITE :/


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°589199
korrigan
Posté le 12-12-2003 à 15:46:10  profilanswer
 

ben mon champ j'ai été obligé de la passer en CLOB car mon texte est très long

mood
Publicité
Posté le 12-12-2003 à 15:46:10  profilanswer
 

n°589221
Mara's dad
Yes I can !
Posté le 12-12-2003 à 15:56:44  profilanswer
 

Ben t'as plus qu'à chercher des exemples d'utilisation du package DBMS_LOB :/


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°589225
korrigan
Posté le 12-12-2003 à 15:58:49  profilanswer
 

les exemples que j'ai trouvés quand j'essaye de les appliquer ça ne marche pas :(
 
Merci quand même

n°589239
Mara's dad
Yes I can !
Posté le 12-12-2003 à 16:09:41  profilanswer
 

Code :
  1. declare
  2. clobloc  CLOB;
  3.  buf  VARCHAR2(100) := ?some data?;
  4. begin
  5. select clobcol into clobloc from table for update;
  6. dbms_lob.open(clobloc, dbms_log.lob_readwrite);
  7. dbms_lob.write(clobloc, 100, 1, buf);
  8. dbms_lob.close(clobloc);
  9.  commit;
  10. end;


 
http://www.sloug.org/presentations [...] Stange.ppt


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°589252
Mara's dad
Yes I can !
Posté le 12-12-2003 à 16:19:53  profilanswer
 

Arf, j'ai vu les exemples avec returning...
 

Code :
  1. $sql = "UPDATE sometable SET lob_col = EMPTY_LOB() WHERE key_col = $key RETURNING lob_col INTO :lob";
  2. $stmt = OCIParse($conn,$sql);
  3. $lob = OCINewDescriptor($conn,OCI_D_LOB);
  4. OCIBindByName($stmt,':lob',&$lob,-1,OCI_B_BLOB);
  5. OCIExecute($stmt,OCI_DEFAULT);
  6. $lob->save($sometext);
  7. $lob->free();


 
T'as quoi comme erreur ?


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Insérer du texte dans BD oracle

 

Sujets relatifs
Taille maxi des noms de vues (et tables ?) sous Oracle 9i (et < ?)[PHP] faire défile du texte en PHP ou via utilisation JS,
[Latex] insérer un code source ![Javascript] effet de texte ds la barre de défilement...
faire defiler un texte en page d'accueil[Oracle]Java Stored procedure
Recherche de doublon ORACLE?applet et oracle
different format de texte dans un selectOptimisation Oracle 9i
Plus de sujets relatifs à : Insérer du texte dans BD oracle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR