Hello,
Je travaille sur Oracle Database Express Edition.
Je souhaite enregistrer un texte très long, supérieur à 4000 caractères. On m'a donc conseille le Clob, qui est capable d'enregistrer de grandes quantités de données.
Mon problème est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| insert into fiches values (2,'println "test fiche 2"
String output1 = "";
String output2 = "";
if (calcaire_total >50
& (texture == "sable argileux" || texture == "limon argileux" || texture == "argile" || texture == "limon argilo-sableux")
& dose_refus > 200
& nature == "craie"
& apparition == "< 30"
& obstacle == "< 30"){
println "fiche 2 validee"
output1="La présence d`un substrat calcaire à très faible profondeur conditionne le fonctionnement général du sol.\n";
if (qtte_MO == "moyen" || qtte_MO == "eleve" || qtte_MO == "tres eleve" || qtte_MO == "sature"){
if (dose_argile > 250) {
output1=output1+"Largile et la matière organique associée à une teneur élevée en calcaire conduit à la formation dune bonne structure (polyédrique fine à grumeleuse).\n"
}
else{ output1=output1+"Malgré le niveau satisfaisant des réserves organiques et le bilan calcique excédentaire, la terre jouit dune stabilité structurale très moyenne. Une fragilité des agrégats et quelques phénomènes de battance sont à craindre.\n";
}}
else {
if (dose_argile > 250){
output1=output1+"La richesse argileuse et le bilan calcique excédentaire ne suffisent pas à assurer une forte stabilité structurale. Les agrégats sont souvent fragiles. Une battance superficielle peut se manifester.\n"
if (sol_pente == true){output1=output1+"Sur cette parcelle, en position de versant, des phénomènes dérosion sont possibles en cas daverse violente sur sol insuffisamment couvert.\n";
}}
else{
output1=output1+"Le sol présente une stabilité structurale souvent médiocre.\n"
if (sol_pente == true){output1=output1+"Compte tenu de la topographie de la parcelle (pente) et de la fragilité des agrégats, des phénomènes dérosion sont probables, notamment sur sol insuffisamment couvert lors daverses violentes.\n"
}}}
output1=output1+"En labsence de fissures dans la roche dure, la profondeur denracinement est très limitée. En raison de la faible épaisseur de sol prospectée, les réserves hydriques sont faibles, mais le ressuyage est rapide.\n"
if (cailloux == true || dose_refus > 200){output1=output1+"Quoique ralenti par la pierrosité, la terre se réchauffe bien et savère assez précoce."
}
if (sol_irrigue == true){output2="Grâce à la mise en oeuvre dune irrigation, ce sol offre de bonnes potentialités. Eviter ou proscrire les cultures ne supportant pas le calcaire.\n"
}
else { output2="Pour une utilisation optimale, ce type de sol mérite dêtre irrigué. Eviter ou proscrire les cultures ne supportant pas le calcaire.\n"
}
if (dose_argile < 250){output2=output2+"Un béchage ou un labour dautomne ou dhiver sont déconseillés. Préférer une intervention en début de printemps.\n"
if (cailloux == true || dose_refus > 200 & dose_argile < 300){output2=output2+"La pierrosité peut être gênante pour la préparation du sol et les semis (risques de blocage des outils et de levée irrégulière).\n"
}
else if (cailloux == true || dose_refus > 200 & dose_argile > 300){output2=output2+"La pierrosité peut être gênante pour ces dernières interventions (risques de blocage des outils et de levée irrégulière).\n"
}}
else {if (dose_argile > 300){output2=output2+"Compte tenu de la teneur en argile, un bêchage ou un labour dautomne ou dhiver sont intéressants pour bénéficier dune structuration sous laction du climat (alternances: gel / dégel, humectation / dessiccation). Un roulage ou un léger tassement pourraient être nécessaires après préparation du sol ou semis.\n"
if (cailloux == true || dose_refus > 200 & dose_argile < 300){output2=output2+"La pierrosité peut être gênante pour la préparation du sol et les semis (risques de blocage des outils et de levée irrégulière).\n"
}
else if (cailloux == true || dose_refus > 200 & dose_argile > 300){output2=output2+"La pierrosité peut être gênante pour ces dernières interventions (risques de blocage des outils et de levée irrégulière).\n"
}}
else{output2=output2+"Le bêchage ou le labour dressé dautomne sont intéressants pour favoriser une structuration de surface sous laction du climat (alternances: gel / dégel, humectation / dessiccation).\n"
}}}
else {output2 = "fiche non validee"}
out=output1+"XXX"+output2;
return out;'); |
Losque je lance cette requête SQL dans l'interface d'oracle, soit il m'affiche une pop-up nommée "Enter bind variables" http://127.0.0.1:8080/apex/f?p=4500:...56226810391::: dans laquelle il n'y a qu'un bouton "Submit", soit il me dit que j'ai dépassé la taille autorisée avec le code d'erreur correspondant à celui qui s'affiche quand on met plus de 4000 caractères dans un varchar.
Quelqu'un connait le motif de l'apparition de la pop-up ?
Et sinon, comment insérer un texte plus gros que 4000 caractères ?
Pour info :
insert into fiches values (1,'println "test fiche 1" String output1=""; String output2=""; if (calcaire_total >50 & texture == "sable argileux" & dose_refus < 200 & nature == "craie" & apparition == "< 30" & obstacle == "> 90 ou pas d`obstacle"){ println "fiche 1 validee" output1="La présence d`un substrat calcaire à très faible profondeur conditionne le fonctionnement général du sol."; if (qtte_MO == "moyen"){ output1=output1+"La teneur actuelle en matières organiques associée à la présence de calcaire conduisent à l`obtention dune bonne structure. Toutefois une pluviométrie dintensité élevée pourrait déstructurer certains agrégats."} output1=output1+"Sauf en cas de substrat calcaire tendre, la profondeur d`enracinement est très limitée, quoique irrégulière compte-tenu de la présence éventuelle de fissures. Le sol est en général très perméable et dispose d`une faible réserve en eau utile. Cependant, celle-ci peut-être compensée par l`exploration racinaire des zones fissurées ou remaniées. \n" if (calc_actif > 50) { output2 = "La présence de calcaire actif peut provoquer un blocage plus ou moins important du phosphore et/ou du fer, d`où des carences ou des déficiences en ces éléments."} output2=output2+"Dans ce type de sol, peu profond et perméable, le lessivage de l`azote et des engrais est important. En raison des risques de pollution des nappes phréatiques et des cours d`eau, éviter l`épandage d`effluents liquides (lisiers, boues,
). Sous réserve de ne choisir que des espèces calcicoles ou indifférentes, et d`assurer une irrigation régulière, ce sol doit offrir de bonnes potentialités." } else output2="fiche non validee"; out=output1+"XXX"+output2; return out;');
Ce code ci a parfaitement fonctionné. Après je ne sais pas si ce sont les retours à la ligne qui ont tout cassé.
Edit : Ah, je viens de tenter de l'exécuter dans la ligne de commande sql, en fait je crois qu'il cherche à exécuter le code en lui-même, il me demande une valeur pour texture, puis pour dose_refus, etc... Je veux que ça soit du texte moi !
Partager