create or replace function blob_to_varchar(tempblob in Blob) return varchar2 is
l_amount BINARY_INTEGER := 800;
l_offset INTEGER := 1;
l_buffer RAW(32767);
l_text_buffer VARCHAR2(32767);
BEGIN
IF (tempblob IS NULL) THEN
return '';
end if;
DBMS_LOB.READ(tempblob, l_amount, l_offset, l_buffer);
l_text_buffer := UTL_RAW.CAST_TO_VARCHAR2(l_buffer);
return l_text_buffer;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('!ERROR: ' || SUBSTR(SQLERRM, 1, 247));
RAISE;
END blob_to_varchar;