diff --git a/function1.sql b/function1.sql index 53efce3..c544219 100644 --- a/function1.sql +++ b/function1.sql @@ -4,10 +4,6 @@ create or replace function convert_to_initials( p_patronymic varchar ) returns varchar as $$ begin - if p_name is null or p_name = '' or p_surname is null or p_surname = '' then - return ''; - end if; - if p_patronymic is null or p_patronymic = '' then return concat(substring(p_name from 1 for 1), '. ', p_surname); end if; diff --git a/report/img/conver_result.png b/report/img/conver_result.png index 444daba..2ebb899 100644 Binary files a/report/img/conver_result.png and b/report/img/conver_result.png differ diff --git a/report/report.tex b/report/report.tex index b2bea27..9d24204 100644 --- a/report/report.tex +++ b/report/report.tex @@ -567,9 +567,9 @@ grant usage, select on sequence shot_series_id_shot_series_seq to edit_user; \subsection{Работа 4: Создание функций и процедур} \textbf{Задача:} Создать функцию и использовать её в запросе. Создать процедуру, которая будет создавать новые записи в таблицах по определённым условиям. -\textbf{Формулировка задачи:} Создать функцию \texttt{convert\_to\_initials}, которая будет получать на вход строки с ФИО, а возвращать строку с инициалами. Создать процедуру \texttt{create\_participant\_request}, которая по заданной информации о соревновании, спортсмене и дивизионе будет создавать заявку на участие в соревновании. +\textbf{Формулировка задачи:} Создать функцию \texttt{convert\_to\_initials}, которая будет получать на вход строки с ФИО, а возвращать строку с инициалами. Функция должна корректно обрабатывать случай, когда отчество отсутствует. Создать процедуру \texttt{create\_participant\_request}, которая по заданной информации о соревновании, спортсмене и дивизионе будет создавать заявку на участие в соревновании. -Код определения функции \texttt{convert\_to\_initials} представлен на Рис.~\ref{lst:convert_to_initials}. Функция принимает на вход три параметра типа \texttt{varchar}: \texttt{p\_name} -- имя, \texttt{p\_surname} -- фамилия, \texttt{p\_patronymic} -- отчество. Возвращает также \texttt{varchar} -- строку с инициалами. Если имя или фамилия не заданы, функция возвращает пустую строку. Функция также отдельно обрабатывает случай, когда не задано отчество, в таком случае инициалы будут состоять только из первой буквы имени и фамилии. Код запроса с использованием этой функции представлен на Рис.~\ref{lst:convert_query}, а результат его выполнения на Рис.~\ref{fig:conver_result}. +Код определения функции \texttt{convert\_to\_initials} представлен на Рис.~\ref{lst:convert_to_initials}. Функция принимает на вход три параметра типа \texttt{varchar}: \texttt{p\_name} -- имя, \texttt{p\_surname} -- фамилия, \texttt{p\_patronymic} -- отчество. Возвращает также \texttt{varchar} -- строку с инициалами. Функция отдельно обрабатывает случай, когда не задано отчество, в таком случае инициалы будут состоять только из первой буквы имени и фамилии. Код запроса с использованием этой функции представлен на Рис.~\ref{lst:convert_query}, а результат его выполнения на Рис.~\ref{fig:conver_result}. \begin{lstlisting}[mathescape=true, caption={Код определения функции \texttt{convert\_to\_initials}.}, label={lst:convert_to_initials}] @@ -579,10 +579,6 @@ create or replace function convert_to_initials( p_patronymic varchar ) returns varchar as $$ begin - if p_name is null or p_name = '' or p_surname is null or p_surname = '' then - return ''; - end if; - if p_patronymic is null or p_patronymic = '' then return concat(substring(p_name from 1 for 1), '. ', p_surname); end if;