Originalmente la tabla esa en mysql y utilizando sqldevelor la "migre" a oracle. Oracle convierte los campos TEXT de mysql a CLOB. Hasta aquí todo bien y sin problema.
Pero cuando en mi aplicación guardo un texto relativamente pequeño, sigue sin haber problema. El rollo se presenta cuando trato de guardar ahí algún texto muy extenso y me arroja el error ora-1704
PHP Warning: oci_execute(): ORA-01704: literal de cadena demasiado largo
busque en algunas soluciones y todos me dicen que debo hacer el insert con variables tipo bind. Sin embargo, hago tal cual lo indica "The Underground PHP
and Oracle Manual"
Código PHP:
<?php
$c = oci_connect('hr', 'hrpwd', 'localhost/XE');
$myblobid = 123;
$myv = 'a very large amount of binary data';
$s = oci_parse($c, 'insert into mybtab (blobid, blobdata)
values (:myblobid, EMPTY_BLOB())
returning blobdata into :blobdata');
$lob = oci_new_descriptor($c, OCI_D_LOB);
oci_bind_by_name($s, ':myblobid', $myblobid);
oci_bind_by_name($s, ':blobdata', $lob, -1, OCI_B_BLOB);
oci_execute($s, OCI_DEFAULT); // use OCI_DEFAULT so $lob->save() works
$lob->save($myv);
oci_commit($c);
$lob->close(); // close LOB descriptor to free resources
?>
Saludos