Bienvenidos de nuevo a vertutoriales.com.
En esta ocasión traemos como resolver un error de tipo de datos de oracle a la hora de leer un campo CLOB. Los campos CLOB los usamos para datos de más de 4000 caracteres y equivale al MEMO en mysql, sin embargo no son tan fáciles de leer.
Dependiendo de la lectura y operaciones que hagamos con el campo así como la longitud del contenido oracle nos puede devolver un error del tipo:
ORA-00932: inconsistent datatypes: expected * got CLOB.
Para el manejo correcto de campos clob y no obtener ningún tipo de error debemos usar la librería de oracle DBMS_LOB:
DBMS_LOB.substr(CAMPO, DBMS_LOB.getlength(CAMPO), 1) as CAMPO,
En el ejemplo usamos dos funciones substr y getlength, estas nos sirven para hacer un recorrido de los datos y obtenerlos por completo en un buffer que luego podemos manejar como string.
DBMS_LOB también podemos usarla con campos LOB*: BLOB, CLOB, NCLOB, BFILE.
Alejandro Diaz 31 mayo, 2011
Hola yo tenia entendido que esa era una excelente solucion, pero cuando lees campos mayores a 4000 caracteres, no funciona.
ORA-06502: PL/SQL: error : character string buffer too small numérico o de valor
VideoTutoriales 1 junio, 2011
Nunca se me había dado el caso, gracias por el apunte.
Hector Elejalde 25 abril, 2012
como hago para ver lo datos reales que se encuentran almacenados en un campo CLOB, ya que al realizar la consulta SQL me muestra con datos de exponenciales ejemplo: ‘1.05E8’