Als start_date
is NULL, er wordt geen uitzondering gegenereerd.
select to_date( null, 'mm/dd/yyyy' )
from dual
is een perfect geldige SQL-instructie die NULL retourneert.
De fout die u krijgt, houdt sterk in dat ten minste enkele van de rijen in de start_date
kolom zijn eigenlijk geen tekenreeksen in het formaat dat u verwacht of die verwijzen naar ongeldige datums (d.w.z. de tekenreeks '13/35/2007'). U kunt een functie schrijven die test of een tekenreeks kan worden geconverteerd naar een datum en de geconverteerde datum of een NULL retourneert. Je kunt dat dan gebruiken in plaats van 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;
en gebruik dan my_to_date
in plaats van to_date
. Dat zou de fout moeten elimineren die je krijgt. U wilt echter waarschijnlijk de gegevens opschonen om de ongeldige tekenreeksen te verwijderen.