Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So validieren Sie das als Parameter PL/SQL angegebene Datum JJJJMMTT

convert(varchar(10), pdate(), 111) scheint ein Versuch zu sein, den SQL Server convert zu verwenden Funktion. Das wird in Oracle nicht funktionieren.

Ich würde einfach so etwas tun wie

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;

Wenn Sie natürlich mehrere Überprüfungen durchführen möchten, damit Sie eine andere Ausnahme auslösen können, wenn die Länge falsch ist, oder einige Überprüfungen hinzufügen, um sicherzustellen, dass das Datum angemessen ist (d. h. innerhalb der letzten 100 Jahre oder nicht mehr als 100 Jahre liegen muss). die Zukunft usw.), könnten Sie dies nach dem to_date tun Konvertierung.