Si start_date es NULL, no se lanza ninguna excepción.
select to_date( null, 'mm/dd/yyyy' )
from dual
es una declaración SQL perfectamente válida que devuelve NULL.
El error que está recibiendo implica fuertemente que al menos algunas de las filas en start_date columna no son en realidad cadenas en el formato esperado o que se asignan a fechas no válidas (es decir, la cadena '35/13/2007'). Puede escribir una función que compruebe si una cadena se puede convertir en una fecha y devolver la fecha convertida o un valor NULL. Luego puede usar eso en lugar de to_date .
CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2,
p_format IN VARCHAR2 )
RETURN DATE
IS
BEGIN
RETURN to_date( p_str, p_format );
EXCEPTION
WHEN OTHERS
THEN
RETURN NULL;
END;
y luego use my_to_date en lugar de to_date . Eso debería eliminar el error que está recibiendo. Sin embargo, probablemente querrá limpiar los datos para deshacerse de las cadenas no válidas.