viernes, 14 de febrero de 2014

Oracle: ORA-24331: user buffer too small

Problema consultado:

"El proceso consiste en consumir un web service. A este le hago una solicitud mediante el paquete UTL_HTTP, dentro del soap le envío el XML que adjunto al correo, pero al momento de recibir una respuesta ( soap_respdata :=from_base64(xmldom.getnodevalue (vnodo)); ) (soap_respdata es tipo CLOB). El archivo XML es grande (31KB), este se envía en un CLOB también al web service, lo armo usando cinco variables varchar2(32767), este proceso ha venido funcionando bien,, envía ls datos y recibe la respuesta, todo bien, hasta ahora que se esta enviando un archivo grande y me pide hacer más grande el buffer, hice una prueba son almacenar en base de datos el resultado, lo estoy haciendo en un archivo físico pero aun así me da el mensaje: ORA-24331: user buffer too small."

Bueno tomen nota de lo siguiente compañeros y compañeras:

Cuando tienes una variable definida como tipo CLOB, el motor de la base de datos requiere hacer una conversión forzada del tipo de dato a varchar2. Hasta aquí todo bien, excepto que en este proceso de conversión establece un tamaño de de 4K máximo para el tipo de dato. Esto puede ocasionar el ORA-24331.

Lo recomendado es utilizar tipos de datos varchar2 que te permite manejar hasta 32K de tamaño. Si estás trabajando con archivos XML y superan este tamaño, también puedes obtener el mismo error.