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

UptoLike

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

127
WHERElast_name=l_nameANDfirst_name=f_name;
‐‐Еслисовпадениененайдено,вернуть‐1.
‐‐Другаяфункция,вкоторойвызывается
get_customer_id();
‐‐можетинтерпретировать‐1какпризнакошибки.
IFNOTFOUNDTHEN
return‐1;
ENDIF;
[...]
В листинге 6.14 показано, что теперь функция get_customer_id() при пере-
даче имени несуществующего клиента возвращает
1.
Листинг 6.14. Вызов нового варианта функции get_customer_id()
booktown=#SELECTget_customer_id('Schmoe','Joe');
get_customer_id
1
(1row)
Аргументы
При вызове функции PL/pgSQL могут получать аргументы различных типов. В
аргументах пользователь передает исходные данные, необходимые для работы
функции. Аргументы делают функции
PL/pgSQL более универсальными и значи-
тельно расширяют область их возможного применения. Список аргументов при-
водится после имени функции в круглых скобках и разделяется запятыми.
Количество и типы аргументов должны соответствовать первоначальному
определению функции.
В листинге 6.15 приведены примеры двух вызовов функции из клиента
psql.
Листинг 6.15. Примеры вызовов функций
booktown=#SELECTget_author('John');
get_author
JohnWorsley
(1row)
booktown=#SELECT
get_author(1111);
get_author
ArielDenham
(1row)
ПРИМЕЧАНИЕ. Функции get_author(text) и get_author(integer) будут рассмотрены позднее в
этой главе.
Аргументы, полученные функцией, поочередно присваиваются идентифи-
каторам, состоящим из знака доллара
($) и порядкового номера. Первому ар-
гументу соответствует идентификатор
$1, второму -- $2 и т. д.
Максимальное количество аргументов равно
16, поэтому идентификаторы
аргументов лежат в интервале от
$1 до $16. В листинге 6.16 приведен пример
функции, которая удваивает свой целочисленный аргумент.
Листинг 6.16. Непосредственное использование аргументов в переменных
CREATEFUNCTIONdouble_price(float)RETURNSfloatAS'
DECLARE