convert(varchar(10), pdate(), 111)
semble être une tentative d'utilisation de SQL Server convert
fonction. Cela ne fonctionnera pas dans Oracle.
Je ferais juste quelque chose comme
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;
Bien sûr, si vous souhaitez effectuer plusieurs vérifications afin de pouvoir lever une exception différente si la longueur est incorrecte ou ajouter des vérifications pour vous assurer que la date est raisonnable (c'est-à-dire qu'elle doit se situer dans les 100 dernières années ou pas plus de 100 ans dans le futur, etc.) vous pouvez le faire après le to_date
transformation.