Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML. Токмаков Г.П. - 144 стр.

UptoLike

Составители: 

144
END;
'LANGUAGE'plpgsql';
В листинге 6.42 приведены результаты, полученные при вызове функции
raise_test() из базы данных booktown. Отладочное сообщение DEBUG отсутст-
вует, поскольку база данных работает не в отладочном режиме.
Листинг 6.42. Результаты вызова raise_test()
booktown=#SELECTraise_test();
NOTICE:Variableanjntegerwaschanged.
NOTICE:Variableanjnteger'svalueisnow2.
ERROR:Variable2changed.Abortingtransaction.
6.1.9. ВЫЗОВ ФУНКЦИЙ
При вызове функции
PL/pgSQL из кода PL/pgSQL имя функции обычно
включается в команду
SQL SELECT или в команду присваивания. Примеры:
SELECTфункция(аргументы);
переменная:=функция(аргументы);
Подобный способ вызова функций при выборке и присваивании стал стан-
дартным, поскольку любая функция
PostgreSQL должна возвращать значение
некоторого типа. Ключевое слово
PERFORM позволяет вызвать функцию и проиг-
норировать возвращаемое значение. Синтаксис вызова функции с ключевым
словом
PERFORM:
PERFORMфункция(аргументы);
В листинге 6.43 приведены примеры вызова функции PL/pgSQL с ключевым
словом
PERFORM и вызова другой функции PL/pgSQL посредством присваивания
(в команде
SELECT INTO).
Функция
ship_item() является удобной «оболочкой» для вызова функции
add_shipment(). Она получает исходные данные, убеждается в существовании
покупателя и книги, а затем передает данные
add_shipment().
Листинг 6.43. Использование ключевого слова PERFORM
CREATEFUNCTIONship_item(text,text,text)RETURNSintegerAS'
DECLARE
‐‐Объявлениепсевдонимовдляаргументовфункции.
l_nameALIASFOR$1;
f_nameALIASFOR$2;
book_isbnALIASFOR$3;
‐‐Объявлениепеременнойдляхранениякодакниги.
‐‐
Переменная используетсядляпроверкипереданногокодаISBN.
book_idinteger;
‐‐Объявлениепеременнойдляхранениякодапокупателя.
‐‐Переменная используется для проверки данных покупателя.
customer_idinteger;
BEGIN
‐‐Получить код покупателя при помощи ранее определенной функции.
SELECTINTOcustomer_idget_customer_id(l_name,f_name);
‐‐Еслипокупательненайден,функцияget_customerjd
‐‐возвращает
1.Вэтомслучаевернуть‐1ивыйтиизфункции.