logo

Функции на PostgreSQL

В този раздел ще разберем работата на Функции на 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++
Параметри Описание
име_на_функция
  • The име на функция параметърът се използва за дефиниране на името на функцията.
  • Името на функцията се изписва след СЪЗДАВАНЕ НА ФУНКЦИЯ ключова дума.
[ИЛИ ЗАМЕНИТЕ]
  • Можем да използваме ИЛИ ЗАМЕНИТЕ ключова дума, ако искаме да променим текущата функция.
  • И това е незадължителен параметър.
функция
  • След използване на ИЛИ ЗАМЕНИТЕ ключова дума, можем да дефинираме функция списък с параметри, които са обхванати в скобите след Име на функцията.
  • И една функция може да съдържа нула или няколко параметъра.
ВРЪЩАНЕ
  • Можем да дефинираме типа данни след ВРЪЩАНЕ ключова дума, която ще върнем от функцията.
  • Може да бъде основен, съставен или домейн тип или препратка от типа на колона на таблица.
Език plpgsql
  • Използва се за дефиниране на името на процедурния език, на който се изпълнява функцията.
  • И не само plpgsql, PostgreSQL поддържа различни процедурни езици.
Тяло_на_функция
  • The тяло_на_функция съдържа изпълнимите части на логиката.

Пример за команда за създаване на функция на 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 Функция за създаване на PostgreSQL с помощта на SQL Shell

Функция за създаване на PostgreSQL с помощта на pgAdmin

Ще следваме процеса по-долу, за да създадем функция в pgAdmin:

Етап 1

Първо, ще отворим най-новата версия pgAdmin в нашата локална система и ще отидем до дървото на обектите и ще се свържем с Javatpoint примерна база данни, в която искаме да създадем функция.

Стъпка 2

След това ще отворим инструмента за заявки, като щракнете върху Инструментът за заявки последва секцията с инструменти, както можем да видим на екранната снимка по-долу:

фабричен дизайн модел
PoatgreSQL функция 2

Стъпка 3

За да създадете get_car_Price1() функция, ще използваме горния код в инструмент за заявки и щракнете върху Изпълни бутон.

След като изпълним горната команда, ще получим прозореца със съобщение по-долу, показващ тази функция get_car_Price1() е била създадено успешно в подобна база данни.

Функция PoatgreSQL

И можем да идентифицираме функцията get_car_Price() в Функции списък, както можем да видим на следната екранна снимка:

Функция PoatgreSQL

Забележка: Ако не можем да идентифицираме името на функцията, можем да щракнете с десния бутон върху възела Functions и да изберете елемент от менюто Refresh..., за да съживим списъка с функции:

Функция PoatgreSQL

Създаване на функция с помощта на SQL Shell(psql)

Ще следваме процеса по-долу, за да създадем таблица psql :

Етап 1

  • Първо ще отворим psql в нашата локална система и ще се свържем с базата данни, където искаме да създадем функция.
  • Ще създадем таблица в javatpoint база данни, която създадохме по-рано в урока за PostgreSQL.

Стъпка 2

  • За свързване на база данни ще въведем командата по-долу:
 c javatpoint 

Изход

След като изпълним горната команда, ще получим следния изход:

Функция PoatgreSQL

Забележка: Ако въведем подобна команда като по-горе, за да създадем функция, в psql, тя ще издаде грешката по-долу, която е: функцията get_car_price вече съществува със същите типове аргументи.

Функция PoatgreSQL

Следователно, за да разрешим тази грешка, създаваме нова функция като 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() функцията е създадена успешно.

Функция PoatgreSQL

Стъпка 4

Можем да използваме командата по-долу, за да изброим всички дефинирани от потребителя функции в съществуващата база данни.

 javatpoint=# df 

Изход

След като изпълним горната команда, ще получим изхода по-долу:

Функция PoatgreSQL

Как да извикате функция, дефинирана от потребителя

В PostgreSQL можем да извикаме дефинираната от потребителя функция по три начина, които са както следва:

    Позиционна нотация Именувана нотация Смесената нотация

Извикване на функция чрез позиционна нотация

Ако искаме да опишем аргументите в подобен ред като параметри, можем да извикаме функция с позиционни означения помогне.

mysql създаване на потребител

Нека видим примерен пример, за да разберем Позиционна нотация работи за извикване на определена функция.

В примера по-долу, get_car_price() аргументите са 26000 и 70 000 , което е еквивалентно на Цена_от и Цена_до параметри.

 Select get_car_Price(26000,70000); 

Изход

Ще получим следния изход при прилагането на горната команда, която извлича онези четири реда, чийто цена_на_автомобила е между 26000 до 70000.

Функция PoatgreSQL

Когато функцията почти няма никакви параметри, можем да извикаме функция с помощта на позиционна нотация .

Ако функцията съдържа няколко параметъра, можем да използваме наименувана нотация за извикване на конкретната функция, защото използвайки наименувана нотация ще направи извикването на функцията по-разбираемо.

Извикване на функция чрез наименована нотация

В примера по-долу показваме работата на извикването на get_car_Price() функция, използваща наименуваната нотация:

 select get_car_Price( Price_from => 26000, Price_to => 70000 ); 

Изход

Ще получим следния изход при изпълнение на горната команда, която показва четири реда въз основа на горния диапазон от цена_на_автомобила .

Функция PoatgreSQL

В нотацията, спомената по-рано, използвахме => за разграничаване на аргумента име и стойност .

PostgreSQL позволява създадения по-стар синтаксис на := за обратна съвместимост , както можем да видим в следната команда:

 select get_car_Price( Price_from := 26000, Price_to := 70000 ); 

Изход

След като изпълним горната команда, ще получим подобен резултат в сравнение с резултата от горната команда, където използваме ' =>' вместо ':=' .

Функция PoatgreSQL

Извикване на функция чрез смесена нотация

Това е групирането на позиционни и наименувани нотации.

Нека видим примерен пример, за да разберем работата на Извикване на функция чрез смесена нотация.

В смесена нотация , не можем да използваме наименувани параметри преди позиционни параметри .

Например:

В командата по-долу ще използваме назовано понятие за Цена_от параметър като Цена_от=>26000, докато за Цена_до параметър, използвахме позиционно понятие като 70 000 , както можем да видим в командата по-долу:

np.свързване
 select get_car_Price(Price_from=>26000,70000); 

Изход

След изпълнение на горната команда, PostgreSQL повдига грешка, която казва, че позиционният аргумент не може да следва посочения аргумент .

Функция PoatgreSQL

За да разрешим горната грешка, ние използваме позиционна и наименована нотация за get_car_price() функция, където 26000 се използва за представяне на Позиционна нотация; от друга страна, Price_to=>70000 се използва за представяне на наименувана нотация :

 select get_car_Price(26000,Price_to=>70000); 

Изход

След като изпълним горната команда, ще получим изхода по-долу, който връща онези коли, чиито цена_на_автомобила е между 26000 и 70000.

Функция PoatgreSQL

Преглед

В Функция PostgreSQL раздел научихме следните теми:

  • Ние сме използвали Функция CREATE команда за създаване на дефинирана от потребителя функция за конкретната таблица.
  • Разбрахме процеса на извикване на дефинирана от потребителя функция с помощта на различни означения като напр Позиционни, именувани и смесени.