Руководство по созданию эффективных запросов



Download 17,08 Mb.
Pdf ko'rish
bet164/210
Sana25.06.2022
Hajmi17,08 Mb.
#704548
TuriРуководство
1   ...   160   161   162   163   164   165   166   167   ...   210
Bog'liq
OptimizZaprvPostgreSQL

у
Правление
 
данными
 
с
 
Помощью
 
функЦий
До сих пор в этой главе рассматривались только функции, выбирающие дан-
ные. Но функции PL/pgSQL позволяют выполнять любую команду SQL, вклю-
чая команды DML.
В лис тинге 11.22 показана функция, которая выдает пассажиру новый по-
садочный талон.


214

Функции
Листинг 11.22 

Создаем новый посадочный талон
CREATE OR REPLACE FUNCTION issue_boarding_pass (
p_booking_leg_id int,
p_passenger_id int,
p_seat text,
p_boarding_time timestamptz
)
RETURNS SETOF boarding_pass_record
AS $body$
DECLARE
v_pass_id int;
BEGIN
INSERT INTO boarding_pass (
passenger_id,
booking_leg_id,
seat,
boarding_time,
update_ts
) VALUES (
p_passenger_id,
p_booking_leg_id,
p_seat,
p_boarding_time,
now()
)
RETURNING pass_id INTO v_pass_id;
RETURN QUERY
SELECT * FROM boarding_passes_pass(v_pass_id);
END;
$body$
LANGUAGE plpgsql;
Обратите внимание, что в теле вызывается функция 
boarding_passes_pass

Ее мы создали ранее, но даже если бы такой функции не существовало, ко-
манда 
CREATE
FUNCTION
не сигнализировала бы об ошибке до момента вы-
полнения. У такого поведения есть свои плюсы и минусы. Оно дает больше 
гибкости во время разработки, но может и создавать проблемы, поскольку 
легко не заметить, что использованная функция была удалена или не рабо-
тает должным образом.
Созданная функция вызывается аналогично любой другой функции:
SELECT * FROM issue_boarding_pass(175820, 462972, '22C',
'2020-06-16 21:45'::timestamptz)
Обратите внимание, что это не имеет особого смысла, поскольку рейс уже 
давно завершился, так что этот вызов приведен здесь только в качестве при-
мера. На рис. 11.5 представлен результат этого выполнения – данные имеют 
тот же формат, что и для других функций, возвращающих посадочные талоны.
При создании этой функции мы сделали предположения, которые не вы-
полняются в реальной жизни. Например, функция не проверяет, был ли уже 
выдан посадочный талон для этого пассажира на данный рейс, не проверяет 


Функции и безопасность 


Download 17,08 Mb.

Do'stlaringiz bilan baham:
1   ...   160   161   162   163   164   165   166   167   ...   210




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish