dbms_lob.getlength () vs. length () para encontrar el tamaño de blob en Oracle

81

Obtengo los mismos resultados de

select length(column_name) from table

como

select dbms_lob.getlength(column_name) from table

Sin embargo, las respuestas a esta pregunta parecen favorecer el uso dbms_lob.getlength().

¿Tiene algún beneficio usarlo dbms_lob.getlength()?

Si cambia la respuesta, sé que todos los blobs son imágenes .bmp (nunca antes funcionó con blobs).

Comunidad
fuente

Respuestas:

115

lengthy dbms_lob.getlengthdevuelve el número de caracteres cuando se aplica a un CLOB (carácter LOB). Cuando se aplica a un BLOB (Binary LOB), dbms_lob.getlengthdevolverá el número de bytes, que puede diferir del número de caracteres en un conjunto de caracteres multibyte.

Como la documentación no especifica qué sucede cuando presenta lengthuna solicitud en un BLOB, le desaconsejaría su uso en ese caso. Si desea la cantidad de bytes en un BLOB, use dbms_lob.getlength.

Vincent Malgrat
fuente
9
O si sabe que está trabajando con BLOB y no con CLOB o NCLOB, use lengthb (BLOB) para obtener el número de bytes en el BLOB.
Janek Bogucki