PostgreSQL függvények

Ebben a részben megértjük a PostgreSQL függvények működését, a függvény parancs létrehozását, és megnézzük a PostgreSQL CREATE FUNCTION parancs valós idejű példáját a PostgreSQL különböző eszközeinek, például a pgadmin4 és az SQL shell (PSQL) segítségével.

És lásd a példát egy felhasználó által definiált függvény hívására, mint például a pozicionális jelölés nevesített jelölés, a vegyes jelölés.

Mi a PostgreSQL függvény?

A PostgreSQL függvény vagy tárolt eljárás SQL és procedurális parancsok, például deklarációk, hozzárendelések, ciklusok, vezérlési folyamatok stb. összessége, amelyet az adatbázis-kiszolgálón tárolnak, és az SQL-felület segítségével lehet bevonni. És PostgreSQL tárolt eljárásokként is ismert.

PostgreSQL függvényeket hozhatunk létre több nyelven, például SQL, PL/pgSQL, C, Python stb. nyelven.

Ez lehetővé teszi számunkra olyan műveletek elvégzését, amelyek általában különböző parancsokat és körutakat igényelnének egy függvényben az adatbázisban.

Mi a PostgreSQL CREATE Function parancs?

A PostgreSQL-ben, ha egy új felhasználó által meghatározott függvényt szeretnénk megadni, akkor a CREATE FUNCTION parancsot használhatjuk.

A PostgreSQL CREATE Function parancs szintaxisa

A PostgreSQL CREATE Function parancs szintaxisa a következő:

A fenti szintaxisban a következő paramétereket használtuk, az alábbi táblázatban látható módon:

Paraméterek leírás
funkció_név
  • A funkció neve paraméter a funkció nevének meghatározására szolgál.
  • The function name is written after the CREATE FUNCTION keyword.
  • We can use the OR REPLACE keyword if we want to change the current function.
  • And it is an optional parameter.
Function
  • After using the OR REPLACE keyword, we can define the function parameter list that are covered in the parentheses after the Function Name.
  • And a function can contain zero or several parameters.
RETURN
  • We can define the data type after the RETURN keyword, which we are going to return from the function.
  • It can be a base, composite, or domain type or reference of the type of a table column.
Language plpgsql
  • It is used to define the name of the Procedural language in which the function is executed.
  • And not just plpgsql, the PostgreSQL supports various procedural languages.
Function_body
  • The function_body contains the executable parts of the logics.

Example of PostgreSQL Create Function Command

Let us see a different example to understand the working of the PostgreSQL CREATE Function command.

We are taking the Car table from the Javatpoint database, created in the PostgreSQL Tutorial.

Creating a new function

In the below command, we are creating a new function, which counts the Cars whose Car_Price between the Price_from and Price_to parameters:

The get_car_Price function is divided into two main sections, which are Header and Function Body.

A Header részben a következő paramétereket használtuk:

  • A függvény nevét elsősorban get_car_Price() néven adjuk meg, amelyet a create függvény után írunk
  • A get_car_Price() függvény ezután két paramétert tartalmaz Price_from és Price_to néven, amelyek egész szám adattípusúak.
  • Ezután a get_car_Price() függvény lekérdez egy egész számot, amelyet a return int feltétel határoz meg.
  • A végén pedig a függvény nyelvét plpgsql-ként használtuk.

A függvénytest részben a következő paramétereket használtuk:

  • A függvényrészben a dollárjeles stringkonstans illusztrációt használtuk, amely $$-val kezdődik és $$$-val végződik.
  • A $$ jel közé egy blokkot helyezhetünk, amely a függvény deklarációját és logikáját takarja.
  • A deklarációs blokkban deklaráltunk egy Car_count nevű változót,amely a Carból kiválasztott autókat tárolja
  • A blokkrész testében, a SELECT INTOparanccsal kiválasztottuk azon autók árát, amelyek értéke a Price_from és Price_to között van, és a kimenetet a Car_countnak adtuk
  • A blokk végén a RETURN parancsot használtuk, hogy megkapjuk a

Függvény létrehozása a PostgreSQL-ben

A PostgreSQL-ben kétféleképpen hozhatunk létre függvényt:

  • PostgreSQL függvény létrehozása a pgAdmin használatával
  • PostgreSQL függvény létrehozása az SQL Shell használatával

PostgreSQL függvény létrehozása a pgAdmin használatával

Az alábbi folyamatot fogjuk követni egy függvény létrehozásához a pgAdminban:

Step1

Először is megnyitjuk a pgAdmin legújabb verzióját a helyi rendszerünkben, majd az objektumfára lépünk, és csatlakozunk a Javatpoint mintaadatbázishoz, amelyben egy függvényt szeretnénk létrehozni.

Step2

Ezután megnyitjuk a lekérdező eszközt a lekérdező eszközre kattintva az Eszközök részt követve, ahogy az alábbi képernyőképen látható:

PoatgreSQL Function2

Step3

A get_car_Price1() függvény létrehozásához a fenti kódot fogjuk használni a lekérdező eszközben, és az Execute gombra kattintunk.

A fenti parancs végrehajtása után az alábbi üzenetablakot kapjuk, amely megjeleníti, hogy a get_car_Price1() függvényt sikeresen létrehoztuk egy hasonló adatbázisban.

PoatgreSQL Function

A Functions listában pedig azonosíthatjuk a get_car_Price() függvényt, ahogy az alábbi képernyőképen láthatjuk:

PoatgreSQL Function

Megjegyzés: Ha nem tudjuk azonosítani a függvény nevét, akkor a jobb gombbal kattinthatunk a Functions csomópontra, és a Refresh (Frissítés) lehetőséget választhatjuk… menu item to revive the function list:

PoatgreSQL Function

Creating a function using SQL Shell(psql)

We are going to follow the below process to create a table in psql:

Step1

  • Firstly, we will open the psqlin our local system, and we will connect to the database where we want to create a function.
  • We will create a table in the javatpointdatabase, which we created earlier in the PostgreSQL tutorial.

Step2

  • For connecting a database, we will enter the below command:

Output

After executing the above command, we will get the following output:

PoatgreSQL Function

Note: If we enter a similar command as above to create a function, in psql, it will issue the below error that is: the function get_car_price already exists with the same argument types.

PoatgreSQL Function

Therefore, to resolve this error, we create a new function as get_car_Price1() in the next step.

Step3

We will enter the below command to create a function as get_car_Price1() in the javatpoint database.

Output

We will get the following output on implementing the above command, which displays that the get_car_Price_count1() function has been created successfully.

PoatgreSQL Function

Step4

We can use the below command to list all user-defined functions in the existing database.

Output

After executing the above command, we will get the below output:

PoatgreSQL Function

How to Call a user-defined function

In PostgreSQL, we can call the user-defined function in three ways, which are as follows:

  • Pozicionális jelölés
  • Neves jelölés
  • A vegyes jelölés

Függvény hívása a pozicionális jelölés segítségével

Ha az argumentumokat a paraméterekhez hasonló sorrendben szeretnénk leírni, akkor a függvényt a pozicionális jelölés segítségével hívhatjuk meg.

Lássunk egy példát, hogy megértsük, hogyan működik a pozicionális jelölés egy adott függvény hívására.

Az alábbi példában a get_car_price() argumentumai 26000 és 70000, ami megfelel a Price_from és Price_to paramétereknek.

Kimenet

A fenti parancs végrehajtásakor a következő kimenetet kapjuk, amely lekérdezi azt a négy sort, amelynek car_price értéke 26000 és 70000 között van.

PoatgreSQL függvény

Ha a függvénynek alig van paramétere, akkor a pozicionális jelölés segítségével hívhatunk függvényt.

Ha a függvény több paramétert tartalmaz, akkor a megnevezett jelölés segítségével hívhatjuk meg az adott függvényt, mert a megnevezett jelölés használatával érthetőbbé válik a függvényhívás.

Függvény hívása a megnevezett jelölés használatával

Az alábbi példában a get_car_Price() függvény meghívásának működését mutatjuk be a megnevezett jelölés használatával:

Kimenet

A fenti parancs végrehajtásakor a következő kimenetet kapjuk, amely négy sort jelenít meg a car_price fenti tartománya alapján.

PoatgreSQL függvény

A korábban említett jelölésben a =>-t használtuk az argumentum nevének és értékének megkülönböztetésére.

A PostgreSQL a visszafelé kompatibilitás érdekében engedélyezi a :=-on létrehozott régebbi szintaxist, amint azt a következő parancsban láthatjuk:

Kimenet

A fenti parancs végrehajtása után hasonló kimenetet kapunk, mint a fenti parancs eredményéhez képest, ahol a ‘:=’ helyett a ‘=>’-t használjuk.

PoatgreSQL függvény

Függvény hívása a vegyes jelölés használatával

A pozicionális és a név szerinti jelölések csoportosítása.

Lássunk egy példát, hogy megértsük a függvényhívás a vegyes jelölés használatával működését.

A vegyes jelölésben nem használhatjuk a megnevezett Paramétereket a pozicionális Paraméterek előtt.

Példa:

Az alábbi parancsban a Price_from paraméterhez a Price_from=>26000 névleges jelölést használjuk, míg a Price_to paraméterhez a pozicionális jelölést használtuk, mint 70000, ahogy az alábbi parancsban is látható:

Kimenet

A fenti parancs végrehajtása után a PostgreSQL hibát jelez, amely szerint a pozicionális argumentum nem követheti a megnevezett argumentumot.

PoatgreSQL függvény

A fenti hiba feloldásához a get_car_price() függvényben a pozicionális és a név szerinti jelölést használjuk, ahol a 26000 a pozicionális jelölést képviseli; másrészt a Price_to=>70000 a név szerinti jelölést:

Kimenet

A fenti parancs végrehajtása után az alábbi kimenetet kapjuk, amely visszaadja azokat az autókat, amelyek car_price értéke 26000 és 70000 között van.

PoatgreSQL függvény

Áttekintés

A PostgreSQL függvények fejezetben a következő témaköröket tanultuk:

  • A CREATE Functionparanccsal létrehoztunk egy felhasználó által definiált függvényt az adott táblához.
  • Megtanultuk a felhasználó által definiált függvény hívásának folyamatát a különböző jelölések segítségével, mint például a pozicionális, a név szerinti és a vegyes jelölések.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük