Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como validar a data YYYYMMDD fornecida como parâmetro PL/SQL


convert(varchar(10), pdate(), 111) parece ser uma tentativa de usar o SQL Server convert função. Isso não vai funcionar no Oracle.

Eu apenas faria 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;

Claro, se você quiser fazer várias verificações para poder lançar uma exceção diferente se o comprimento estiver incorreto ou adicionar algumas verificações para garantir que a data seja razoável (ou seja, deve estar nos últimos 100 anos ou não mais de 100 anos em o futuro, etc.) você pode fazer isso após o to_date conversão.