No change in UTL_FILE , but in the behaviour of NVL. You get the error because the datatypes in some of the NLV functions (NVL(a.igc_claim_amount,' ')) do not match. Use TO_CHAR to convert the numbers to character.

SQL> declare
2 dummy varchar2(1);
3 begin
4 dummy:=nvl(0,' ');
5 end;
6 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 4

SQL> declare
2 dummy varchar2(1);
3 begin
4 dummy:=nvl(to_char(0),' ');
5 end;
6 /

PL/SQL procedure successfully completed.