convert(varchar(10), pdate(), 111)
verkar vara ett försök att använda SQL Server convert
fungera. Det kommer inte att fungera i Oracle.
Jag skulle bara göra något liknande
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;
Naturligtvis, om du vill göra flera kontroller så att du kan göra ett annat undantag om längden är felaktig eller lägga till några kontroller för att säkerställa att datumet är rimligt (dvs. måste vara inom de senaste 100 åren eller inte mer än 100 år i framtiden, etc.) kan du göra det efter to_date
konvertering.