convert(varchar(10), pdate(), 111)
se zdá být pokusem použít SQL Server convert
funkce. To v Oracle nebude fungovat.
Udělal bych něco jako
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;
Samozřejmě, pokud chcete provést více kontrol, abyste mohli vyvolat jinou výjimku, pokud je délka nesprávná, nebo přidat nějaké kontroly, abyste zajistili, že datum je přiměřené (tj. musí být za posledních 100 let nebo ne více než 100 let v budoucnost atd.), můžete to udělat po to_date
konverze.