I am working with a database schema where xml content is being stored in a BLOB and I’m working on querying that XML.
When you cast the BLOB to VARCHAR, you’ll run into the limit of 2000 characters with the following error:
ORA-06502 PL/SQL : numeric or value error : raw variable length too long
So this trick came in handy:
SELECT XMLTYPE( BLOB_FIELD, 871 ) AS AWESOMEXML FROM YOUR_TABLE;
Please be very aware of the character set that you are using, you can enter a world of hurt when you’re using the wrong one. The number 871 is the character set UTF8, which we are using.
For other character sets, check http://www.mydul.net/charsets.html
2 Replies to “Oracle SQL – BLOB to XML Type ( ORA-06502 PL/SQL : numeric or value error : raw variable length too long )”
thanks, this trick was very helpful. I was originally using the utl_raw.cast_to_varchar2 with its limitations but the simplicity of your approach won me over!
Thanks Narayan, good to hear it’s being used! 🙂