PL SQL Data Types Oracle PLSQL Tutorial

You need to wrap the selector in an NVL expression to be sure that it could never be NULL:

SQL> create or replace function f_getDateType (in_dt DATE)
  2  return VARCHAR2
  3  is
  4      v_out VARCHAR2(10);
  5  begin
  6      case nvl(to_char(in_dt,'d') , 0)
  7          when 0 then
  8          -- value will be null if in_dt is null
  9              v_out:='';
 10          when 1 then
 11              v_out:='SUNDAY';
 12          when 7 then
 13              v_out:='SATURDAY';
 14          else
 15              v_out:='WEEKDAY';
 16      end case;
 17      return v_out;
 18  end;
 19  /
Function created.
SQL>