В този раздел ще разберем работата на Функции на PostgreSQL, функция за създаване команда и вижте примера в реално време на Команда PostgreSQL CREATE FUNCTION използвайки различните инструменти на PostgreSQL, като напр pgadmin4 и SQL обвивка (PSQL).
И вижте примера за извикване на a дефинирана от потребителя функция като позиционна нотация наречена нотация, смесена нотация.
Какво представлява функцията PostgreSQL?
Функция на PostgreSQL или a съхранена процедура е набор от SQL и процедурни команди като декларации, присвоявания, цикли, поток на управление и т.н., съхранявани на сървъра на базата данни и могат да бъдат включени с помощта на SQL интерфейс . И е известен още като Съхранени процедури на PostgreSQL .
Можем да създаваме функции на PostgreSQL на serval езици, например, SQL , PL/pgSQL , ° С , Python и т.н.
Това ни позволява да извършваме операции, които обикновено приемат различни команди и обиколки във функция в базата данни.
Какво представлява командата PostgreSQL CREATE Function?
В PostgreSQL, ако искаме да посочим нова дефинирана от потребителя функция, можем да използваме СЪЗДАВАНЕ НА ФУНКЦИЯ команда.
Синтаксис на командата PostgreSQL CREATE Function
Синтаксисът за Команда PostgreSQL CREATE Function е както следва:
CREATE [OR REPLACE] FUNCTION function_name (arguments) RETURNS return_datatype LANGUAGE plpgsql AS $variable_name$ DECLARE declaration; [...] -- variable declaration BEGIN [...] -- logic RETURN variable_name END; $$
В горния синтаксис сме използвали следните параметри, както е показано в таблицата по-долу:
наследяване в c++
Параметри | Описание |
---|---|
име_на_функция |
|
[ИЛИ ЗАМЕНИТЕ] |
|
функция |
|
ВРЪЩАНЕ |
|
Език plpgsql |
|
Тяло_на_функция |
|
Пример за команда за създаване на функция на PostgreSQL
Нека видим различен пример, за да разберем работата на Функция PostgreSQL CREATE команда.
Ние приемаме Кола маса от Javatpoint база данни, създадена в урока за PostgreSQL.
Създаване на нова функция
В командата по-долу създаваме нова функция, която отчита автомобили чийто Car_Price между Цена_от и Цена_до параметри:
Create function get_car_Price(Price_from int, Price_to int) returns int language plpgsql as $$ Declare Car_count integer; Begin select count(*) into Car_count from Car where Car_price between Price_from and Price_to; return Car_count; End; $$;
The get_car_Price функцията е разделена на два основни раздела, които са Заглавие и текст на функцията .
Използвахме следните параметри в Заглавка раздел:
- Първо, ние определяме името на функцията като get_car_Price(), което се пише след създайте функция
- След това, get_car_Price() функцията съдържа два параметъра Цена_от и Price_to, с целочислен тип данни.
- Тогава get_car_Price() функцията извлича цяло число, дефинирано от условието return int.
- И накрая използвахме функционалния език като plpgsql .
Използвахме следните параметри в Функционално тяло раздел:
- Ние сме използвали низ в доларови кавички постоянна илюстрация в функционалния раздел, който започва с $$ и завършва с $$ .
- Между $$ знак, можем да поставим блок, който покрива декларацията и логика на функцията .
- В блока за декларация декларирахме променлива, наречена брой_автомобили, който съхранява автомобилите, избрани от Кола
- В тялото на блоковата секция използвахме ИЗБЕРЕТЕ В команда за избор на цена на автомобили, чиито стойности са между Цена_от и Цена_до и дайте изхода на Коли_брой
- В края на блока сме използвали ВРЪЩАНЕ команда за получаване на
Създаване на функция в PostgreSQL
В PostgreSQL можем да създадем функция по два начина:
Функция за създаване на PostgreSQL с помощта на pgAdmin
Ще следваме процеса по-долу, за да създадем функция в pgAdmin:
Етап 1
Първо, ще отворим най-новата версия pgAdmin в нашата локална система и ще отидем до дървото на обектите и ще се свържем с Javatpoint примерна база данни, в която искаме да създадем функция.
Стъпка 2
След това ще отворим инструмента за заявки, като щракнете върху Инструментът за заявки последва секцията с инструменти, както можем да видим на екранната снимка по-долу:
фабричен дизайн модел
Стъпка 3
За да създадете get_car_Price1() функция, ще използваме горния код в инструмент за заявки и щракнете върху Изпълни бутон.
След като изпълним горната команда, ще получим прозореца със съобщение по-долу, показващ тази функция get_car_Price1() е била създадено успешно в подобна база данни.
И можем да идентифицираме функцията get_car_Price() в Функции списък, както можем да видим на следната екранна снимка:
Забележка: Ако не можем да идентифицираме името на функцията, можем да щракнете с десния бутон върху възела Functions и да изберете елемент от менюто Refresh..., за да съживим списъка с функции:
Създаване на функция с помощта на SQL Shell(psql)
Ще следваме процеса по-долу, за да създадем таблица psql :
Етап 1
- Първо ще отворим psql в нашата локална система и ще се свържем с базата данни, където искаме да създадем функция.
- Ще създадем таблица в javatpoint база данни, която създадохме по-рано в урока за PostgreSQL.
Стъпка 2
- За свързване на база данни ще въведем командата по-долу:
c javatpoint
Изход
След като изпълним горната команда, ще получим следния изход:
Забележка: Ако въведем подобна команда като по-горе, за да създадем функция, в psql, тя ще издаде грешката по-долу, която е: функцията get_car_price вече съществува със същите типове аргументи.
Следователно, за да разрешим тази грешка, създаваме нова функция като get_car_Price1 () в следващата стъпка.
Стъпка 3
преобразуване на типове и кастинг в java
Ще въведем командата по-долу, за да създадем функция като get_car_Price1 () в javatpoint база данни.
javatpoint=# Create function get_car_Price1(Price_from int, Price_to int) javatpoint-# returns int javatpoint-# language plpgsql javatpoint-# as javatpoint-# $$ javatpoint$# Declare javatpoint$# Car_count integer; javatpoint$# Begin javatpoint$# select count(*) javatpoint$# into Car_count javatpoint$# from Car javatpoint$# where car_price between Price_from and Price_to; javatpoint$# return Price_count; javatpoint$# End; javatpoint$# $$;
Изход
Ще получим следния изход при прилагането на горната команда, който показва, че get_car_Price_count1() функцията е създадена успешно.
Стъпка 4
Можем да използваме командата по-долу, за да изброим всички дефинирани от потребителя функции в съществуващата база данни.
javatpoint=# df
Изход
След като изпълним горната команда, ще получим изхода по-долу:
Как да извикате функция, дефинирана от потребителя
В PostgreSQL можем да извикаме дефинираната от потребителя функция по три начина, които са както следва:
Извикване на функция чрез позиционна нотация
Ако искаме да опишем аргументите в подобен ред като параметри, можем да извикаме функция с позиционни означения помогне.
mysql създаване на потребител
Нека видим примерен пример, за да разберем Позиционна нотация работи за извикване на определена функция.
В примера по-долу, get_car_price() аргументите са 26000 и 70 000 , което е еквивалентно на Цена_от и Цена_до параметри.
Select get_car_Price(26000,70000);
Изход
Ще получим следния изход при прилагането на горната команда, която извлича онези четири реда, чийто цена_на_автомобила е между 26000 до 70000.
Когато функцията почти няма никакви параметри, можем да извикаме функция с помощта на позиционна нотация .
Ако функцията съдържа няколко параметъра, можем да използваме наименувана нотация за извикване на конкретната функция, защото използвайки наименувана нотация ще направи извикването на функцията по-разбираемо.
Извикване на функция чрез наименована нотация
В примера по-долу показваме работата на извикването на get_car_Price() функция, използваща наименуваната нотация:
select get_car_Price( Price_from => 26000, Price_to => 70000 );
Изход
Ще получим следния изход при изпълнение на горната команда, която показва четири реда въз основа на горния диапазон от цена_на_автомобила .
В нотацията, спомената по-рано, използвахме => за разграничаване на аргумента име и стойност .
PostgreSQL позволява създадения по-стар синтаксис на := за обратна съвместимост , както можем да видим в следната команда:
select get_car_Price( Price_from := 26000, Price_to := 70000 );
Изход
След като изпълним горната команда, ще получим подобен резултат в сравнение с резултата от горната команда, където използваме ' =>' вместо ':=' .
Извикване на функция чрез смесена нотация
Това е групирането на позиционни и наименувани нотации.
Нека видим примерен пример, за да разберем работата на Извикване на функция чрез смесена нотация.
В смесена нотация , не можем да използваме наименувани параметри преди позиционни параметри .
Например:
В командата по-долу ще използваме назовано понятие за Цена_от параметър като Цена_от=>26000, докато за Цена_до параметър, използвахме позиционно понятие като 70 000 , както можем да видим в командата по-долу:
np.свързване
select get_car_Price(Price_from=>26000,70000);
Изход
След изпълнение на горната команда, PostgreSQL повдига грешка, която казва, че позиционният аргумент не може да следва посочения аргумент .
За да разрешим горната грешка, ние използваме позиционна и наименована нотация за get_car_price() функция, където 26000 се използва за представяне на Позиционна нотация; от друга страна, Price_to=>70000 се използва за представяне на наименувана нотация :
select get_car_Price(26000,Price_to=>70000);
Изход
След като изпълним горната команда, ще получим изхода по-долу, който връща онези коли, чиито цена_на_автомобила е между 26000 и 70000.
Преглед
В Функция PostgreSQL раздел научихме следните теми:
- Ние сме използвали Функция CREATE команда за създаване на дефинирана от потребителя функция за конкретната таблица.
- Разбрахме процеса на извикване на дефинирана от потребителя функция с помощта на различни означения като напр Позиционни, именувани и смесени.