Leer clob en oracle (ORA-00932)
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.
Comments
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
Nunca se me había dado el caso, gracias por el apunte.
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’