ВУЗ:
Составители:
Рубрика:
– 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
Страницы
- « первая
- ‹ предыдущая
- …
- 125
- 126
- 127
- 128
- 129
- …
- следующая ›
- последняя »
