Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

campo CLOB php error 1704

Estas en el tema de campo CLOB php error 1704 en el foro de Oracle en Foros del Web. Estimados tengo un problema con un campo clob. Originalmente la tabla esa en mysql y utilizando sqldevelor la "migre" a oracle. Oracle convierte los campos ...
  #1 (permalink)  
Antiguo 14/03/2011, 11:33
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 15 años
Puntos: 7
Pregunta campo CLOB php error 1704

Estimados tengo un problema con un campo clob.

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($cOCI_D_LOB);
oci_bind_by_name($s':myblobid'$myblobid);
oci_bind_by_name($s':blobdata'$lob, -1OCI_B_BLOB);
oci_execute($sOCI_DEFAULT); // use OCI_DEFAULT so $lob->save() works
$lob->save($myv);
oci_commit($c);
$lob->close(); // close LOB descriptor to free resources
?>
Esta es la base que utilice para modificar mi insert que como mencione era el "típico de sql". Ahora no sé si el problema estuvo en que mi tabla a diferencia de la tabla mytab que aparece en el ejemplo, tiene además del id y el campo clob, cuatro (4) campos más, varchar2 y numeric?

Saludos
  #2 (permalink)  
Antiguo 16/03/2011, 15:03
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 15 años
Puntos: 7
Respuesta: campo CLOB php error 1704

Aquí les dejo la solucion fijense bien que sólo esta modificado donde dice blob por clob, leí con más detenimiento la documentación y encontre la solución...
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_CLOB())
returning blobdata into :blobdata'
);
$lob oci_new_descriptor($cOCI_D_LOB);
oci_bind_by_name($s':myblobid'$myblobid);
oci_bind_by_name($s':blobdata'$lob, -1OCI_B_CLOB);
oci_execute($sOCI_DEFAULT); // use OCI_DEFAULT so $lob->save() works
$lob->save($myv);
oci_commit($c);
$lob->close(); // close LOB descriptor to free resources
?>

Etiquetas: php, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:09.