Same function, same argument, different outputs:
set serveroutput on;
declare
n number := 122.5;
c_plsql varchar2(1);
c_sql varchar2(1);
begin
c_plsql := chr(n);
select chr(n) into c_sql from dual;
dbms_output.put_line(c_plsql || ' ' || c_sql);
end;
/
{ z
PL/SQL procedure successfully completed.