convert(varchar(10), pdate(), 111)
wydaje się być próbą użycia SQL Server convert
funkcjonować. To nie zadziała w Oracle.
Po prostu zrobiłbym coś takiego
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;
Oczywiście, jeśli chcesz przeprowadzić wiele kontroli, aby móc zgłosić inny wyjątek, jeśli długość jest nieprawidłowa, lub dodać kilka sprawdzeń, aby upewnić się, że data jest rozsądna (tj. musi być w ciągu ostatnich 100 lat lub nie więcej niż 100 lat w przyszłość itp.) możesz to zrobić po to_date
konwersja.