Шифрование и секретность в Linux

       

Команда IF/THEN/ELSE/IF



Листинг 11.40. Команда IF/THEN/ELSE/IF

CREATE FUNCTION books_by_subject (text) RETURNS text AS '

DECLARE

-- Объявление псевдонима для аргумента, содержащего либо

-- строку all. либо тему.

sub_tnie ALIAS FOR $1;

-- Объявление целочисленной переменной для хранения кода темы

- и текстовой переменной для хранения списка найденных книг.

- Текстовая переменная инициализируется пустой строкой.

suD_id integer:

found_text text :

BEGIN

-- Получить код темы, описание которой передано в аргументе.



SELECT INTO subjd id FROM subjects WHERE subject = sub_title:

-- Проверить, запросил ли пользователь информацию обо всех темах

- (строка all). В этом случае вызвать функцию extract_all_titles()

- и вернуть полученную текстовую переменную.

IF sub_t1tle = ' 'all'' THEN

found_text extract_all_titles();
RETURN found text:

-- Если в аргументе НЕ БЫЛА передана строка "all", проверить.

-- входит ли код темы в интервал допустимых значений.

-- Если это так, вызвать функцию extract_title() с кодом темы

-- и присвоить результат переменной found_text.

ELSE IF subjd >
= 0 THEN

found_text :- extract_title(sub_id):

RETURN "\n" || sub_title || ":\n" | found_text;

-- Если код темы равен NULL, вернуть сообщение о том. что

-- заданная тема не найдена.

ELSE IF subjd IS NULL THEN

RETURN "Subject not found.";

END IF:

END IF;

END IF;

RETURN "An error occurred. .";

END;

' LANGUAGE 'plpgsql':

В листинге 11.41 сначала приведен результат вызова функции books_by_subject() с аргументом а! 1 (признак того, что пользователь хочет получить список книг по всем темам). Затем следуют результаты, полученные при вызове функции с аргументом Computers (получение списка книг, посвященных компьютерам).



Содержание раздела