Solución:
Esto funciona
select DBMS_LOB.substr(myColumn, 3000) from myTable
Al obtener la subcadena de una columna CLOB y usar una herramienta de consulta que tiene restricciones de tamaño / búfer, a veces necesitará establecer el BÚFER en un tamaño mayor. Por ejemplo, mientras usa SQL Plus, use el SET BUFFER 10000
para establecerlo en 10000 ya que el valor predeterminado es 4000.
Ejecutando el DBMS_LOB.substr
comando también puede especificar la cantidad de caracteres que desea devolver y el desplazamiento desde el cual. Entonces usando DBMS_LOB.substr(column, 3000)
podría restringirlo a una cantidad lo suficientemente pequeña para el búfer.
Consulte la documentación de Oracle para obtener más información sobre el comando substr
DBMS_LOB.SUBSTR ( lob_loc IN CLOB CHARACTER SET ANY_CS, amount IN INTEGER := 32767, offset IN INTEGER := 1) RETURN VARCHAR2 CHARACTER SET lob_loc%CHARSET;
Me encontré con otra condición con HugeClob en mi base de datos de Oracle. los dbms_lob.substr
solo se permite un valor de 4000 en la función, por ejemplo:
dbms_lob.substr(column,4000,1)
así que para mi HughClob, que era más grande, tuve que usar dos llamadas en select
:
select dbms_lob.substr(column,4000,1) part1,
dbms_lob.substr(column,4000,4001) part2 from .....
Estaba llamando desde una aplicación Java, así que simplemente concatené part1 y part2 y las envié como un correo electrónico.