convert(varchar(10), pdate(), 111)
ser ud til at være et forsøg på at bruge SQL Server convert
fungere. Det kommer ikke til at fungere i Oracle.
Jeg ville bare gøre sådan noget som
DECLARE
l_dt date;
BEGIN
l_dt := to_date( pdate, 'yyyymmdd' );
EXCEPTION
WHEN others
THEN
raise_application_error( -20001, pdate || ' is not a date in the format YYYYMMDD' );
END;
Selvfølgelig, hvis du vil foretage flere kontroller, så du kan kaste en anden undtagelse, hvis længden er forkert, eller tilføje nogle kontroller for at sikre, at datoen er rimelig (dvs. skal være inden for de sidste 100 år eller ikke mere end 100 år i fremtiden osv.) kan du gøre det efter to_date
konvertering.