convert(varchar(10), pdate(), 111)
SQLServerのconvert
を使用しようとしているようです 関数。これはOracleでは機能しません。
のようなことをしたいだけです
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;
もちろん、長さが正しくない場合に別の例外をスローできるように複数のチェックを実行する場合、または日付が妥当であることを確認するためにいくつかのチェックを追加する場合(つまり、過去100年以内または100年以内である必要があります)将来など)to_date
の後にそれを行うことができます 変換。