Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment valider la date AAAAMMJJ donnée en paramètre PL/SQL

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.