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


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



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

CREATE FUNCTION in_stock (integer.integer) RETURNS boolean AS '

DECLARE

-- Объявление псевдонимов для аргументов функции.

b_id ALIAS FOR $1:

b_edition ALIAS FOR $2:

-- Объявление текстовой переменной для найденного кода ISBN.

b_isbn text:

-- Объявление целочисленной переменной для количества экземпляров. stock_amount integer:

BEGIN

-- Команда SELECT INTO находит в таблице editions запись.

-- у которой код книги и номер издания совпадают с аргументами

-- функции. Код ISBN из найденной записи присваивается переменной.



SELECT INTO b_sbn isbn FROM editions WHERE

bookjd = b_id AND edition - b_edition:

-- Проверить, не был ли полученный код ISBN равен NULL.

-- Значение NULL говорит о тон. что в базе данных

-- не существует записи книги с кодом и номером издания.

-- переданными в аргументах функции. Если запись не существует.

-- функция возвращает FALSE и завершает работу.

IF b_sbn IS NULL THEN

RETURN FALSE: END IF:

-- Получить из таблицы stock количество экземпляров книги

-- на складе и присвоить его переменной stock_amount.

SELECT INTO stock_amount stock FROM stock

WHERE isbn = bjsbn:

-- Проверить, является ли количество книг на складе

-- положительной величиной. Если количество положительно,

-- функция возвращает TRUE, а если отрицательно

-- или равно нулю - FALSE.

IF stock_amount <= 0 THEN

RETURN FALSE: ELSE

RETURN TRUE: END IF:

END:

' LANGUAGE 'plpgsql':

В листинге 11.39 показан результат вызова in_stock() для кода книги 4513 и издания 2.



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