Problème avec le type LONG [ ORACLE ] - Programmation
Marsh Posté le 28-08-2001 à 17:10:48
S'il vous plaît, je vous en prie, un petit coup de pouce quoi! Juste pour avancer un peu, même si ça résoud pas entièrement le problème, MERCI
Marsh Posté le 29-08-2001 à 09:59:18
Je ne connais pas ORACLE, mais te voyant désespéré, j'ai fait une recherche sur google de Oracle LONG et j'ai trouvé (à la 8° proposition de google) ceci :
http://callista.free.fr/php_oracle [...] phidrep=89
J'espère que ton moral va remonter...
A+
Marsh Posté le 29-08-2001 à 11:35:39
Merci, en fait on peut pas insérer des données de + de 2000 caractères pour Oracle7 et 4000 pour Oracle8 directement d'un fichier ou de SQLPlus, il faut passer par un script PL/SQL ou Java ou PHP.
Le lien http://callista.free.fr/php_oracle [...] phidrep=89
est un bon départ pour le faire en PHP. Merci JPA
Celui-ci explique bien le problème : www.orafaq.com
Marsh Posté le 30-08-2001 à 09:36:53
Voilà un script qui insère tout un fichier dans un champ de type long:
<?
$db="";
$conn=ocilogon("scott","tiger",$db);
$file="fichier.txt";
$fp = fopen($file, "r" );
while ($data = fread($fp,32768)) {
$curs=ociparse ($conn, "insert into TEST2 values (:data)" );
OCIBindByName($curs,":data",&$data,-1);
ociexecute($curs);
}
fclose($fp);
OCILogoff($conn);
?>
Et le script pour récupérer le contenu:
<?php
$conn = OCILogon("scott","tiger" );
$curs = OCIParse($conn,"select CHAINE from TEST2" );
/* La définition DOIT être faîte AVANT ociexecute! */
OCIDefineByName($curs,"CHAINE",&$chaine);
OCIExecute($curs);
while (OCIFetch($curs)) {
echo $chaine;
}
OCIFreeStatement($curs);
OCILogoff($conn);
?>
Merci et j'espère que ça évitera à quelqu'un de chercher trop longtemps!
Ce script est en PHP, il est possible de le faire aussi en java, PL/SQL.
Marsh Posté le 30-08-2001 à 09:50:21
prob avec les smilies:
c'est pour le symbole deux points et la lettre d ":" et "d"
Marsh Posté le 07-08-2001 à 11:04:36
J'ai une table TEMP avec un seul champ de type LONG.
Depuis Oracle8 Navigator, j'insère via un fichier texte une chaine. Dès que cette chaîne dépasse 4000 caractères j'ai ce message : "ORA-01704: constante de chaîne trop longue".
Avec SQLPlus, l'entrée est limitée à 2499 caractères.
Avec un script PHP, j'obtiens le même message d'erreur qu'avec Oracle8 Navigator.
Comment puis-je faire?? Est-ce que ce pourraît être dû à une propriété d'Oracle??