sql >> Base de Datos >  >> RDS >> Oracle

Cómo validar la fecha AAAAMMDD dada como parámetro PL/SQL

convert(varchar(10), pdate(), 111) parece ser un intento de usar SQL Server convert función. Eso no va a funcionar en Oracle.

Simplemente haría algo como

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;

Por supuesto, si desea realizar varias comprobaciones para poder lanzar una excepción diferente si la longitud es incorrecta o agregar algunas comprobaciones para garantizar que la fecha sea razonable (es decir, debe estar dentro de los últimos 100 años o no más de 100 años en el futuro, etc.) podría hacerlo después de to_date conversión.