Oracle
 sql >> Database >  >> RDS >> Oracle

Come convalidare la data AAAAMMGG fornita come parametro PL/SQL

convert(varchar(10), pdate(), 111) sembra essere un tentativo di utilizzare la convert di SQL Server funzione. Non funzionerà in Oracle.

Farei semplicemente qualcosa del tipo

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;

Naturalmente, se si desidera eseguire più controlli in modo da poter generare un'eccezione diversa se la lunghezza non è corretta o aggiungere alcuni controlli per assicurarsi che la data sia ragionevole (ovvero deve rientrare negli ultimi 100 anni o non più di 100 anni in il futuro, ecc.) potresti farlo dopo il to_date conversione.