В PLSQL — Как создать функцию, которая принимает дату в качестве входных данных гггг-мм—дд и написать запрос внутри функции, чтобы оценить, является ли дата действительной

#oracle #function #date #plsql

Вопрос:

Как создать функцию, которая принимает дату в качестве входных yyyy-mm-dd данных, и написать запрос внутри функции, чтобы оценить, действительна ли дата в PL/SQL.

Комментарии:

1. Эта функция уже существует: validate_conversion

2. Также спрашивали по ОТН _ community.oracle.com/tech/developers/discussion/4489083/…

Ответ №1:

Вот один из вариантов:

  • примите входной параметр (который является строкой)
  • преобразуйте его в DATE значение (строка №6)
    • если это удастся, вернитесь OK
    • если нет, возникает исключение (вам на самом деле все равно, какое именно; входная строка просто не представляет допустимое значение даты, представленное в указанном вами формате: yyyy-mm-dd ), и функция возвращает NOK

 SQL> create or replace function f_date (par_date in varchar2)
  2    return varchar2
  3  is
  4    l_date date;
  5  begin
  6    l_date := to_date(par_date, 'yyyy-mm-dd');
  7    return 'OK';
  8  exception
  9    when others then
 10      return 'NOK';
 11  end;
 12  /

Function created.

SQL> select f_date('2021-09-17') result from dual;

RESULT
--------------------------------------------------------------------------------
OK

SQL> select f_date('2021-19-87') result from dual;

RESULT
--------------------------------------------------------------------------------
NOK

SQL>
 

Комментарии:

1. Я не могу прокомментировать синтаксис PosgreSQL , @Atishay. pl/pgsql отличается от PL/SQL Oracle . Мы говорим здесь оракуле.