Funkce PostgreSQL

V této části se seznámíme s fungováním funkcí PostgreSQL, příkazem create function a uvidíme příklad příkazu PostgreSQL CREATE FUNCTION v reálném čase pomocí různých nástrojů PostgreSQL, jako je pgadmin4 a SQL shell (PSQL).

A prohlédněte si příklad volání uživatelsky definované funkce, jako je polohový zápis pojmenovaný zápis, smíšený zápis.

Co je to funkce PostgreSQL?

Funkce PostgreSQL nebo uložená procedura je soubor příkazů SQL a procedurálních příkazů, jako jsou deklarace, přiřazení, smyčky, tok řízení atd. uložených na databázovém serveru, které lze zapojit pomocí rozhraní SQL. A je také známá jako uložené procedury PostgreSQL.

Funkce PostgreSQL můžeme vytvářet v různých jazycích, například v SQL, PL/pgSQL, C, Pythonu atd.

Umožňuje nám provádět operace, které by obecně vyžadovaly různé příkazy a oběhy ve funkci v rámci databáze.

Co je příkaz PostgreSQL CREATE Function?

Chceme-li v PostgreSQL zadat novou uživatelsky definovanou funkci, můžeme použít příkaz CREATE FUNCTION.

Syntaxe příkazu PostgreSQL CREATE Function

Syntaxe příkazu PostgreSQL CREATE Function je následující:

V uvedené syntaxi jsme použili následující parametry, jak ukazuje následující tabulka:

Parametry Popis
název_funkce
  • Parametr název funkce slouží k definování názvu funkce.
  • 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.

V sekci Hlavička jsme použili následující parametry:

  • Především jsme zadali název funkce jako get_car_Price(), který je zapsán za funkcí create
  • Poté funkce get_car_Price() obsahuje dva parametry Price_from a Price_to, které mají datový typ integer.
  • Poté funkce get_car_Price() získá celé číslo definované podmínkou return int.
  • A na závěr jsme použili jazyk funkce jako plpgsql.

V části těla funkce jsme použili následující parametry:

  • V části funkce jsme použili ilustrační řetězec s uvozovkami v dolarech, který začíná $$ a končí $$.
  • Mezi znak $$ můžeme umístit blok, který zahrnuje deklaraci a logiku funkce.
  • V deklaračním bloku jsme deklarovali proměnnou Car_count,která uchovává vybrané vozy z Car
  • V těle bloku sekce, jsme použili příkaz SELECT INTO k výběru cen vozů, jejichž hodnoty se nacházejí mezi Price_from a Price_to, a výstup jsme předali do Car_count
  • Na konci bloku jsme použili příkaz RETURN k získání

Vytvoření funkce v PostgreSQL

V PostgreSQL můžeme funkci vytvořit dvěma způsoby:

  • Vytvoření funkce v PostgreSQL pomocí aplikace pgAdmin
  • Vytvoření funkce v PostgreSQL pomocí SQL Shell

Vytvoření funkce v PostgreSQL pomocí aplikace pgAdmin

Pro vytvoření funkce v aplikaci pgAdmin budeme postupovat podle níže uvedeného postupu:

Krok1

Nejprve otevřeme nejnovější verzi aplikace pgAdmin v našem lokálním systému, přejdeme do stromu objektů a připojíme se k ukázkové databázi Javatpoint, ve které chceme vytvořit funkci.

Krok2

Poté otevřeme dotazovací nástroj kliknutím na dotazovací nástroj, za kterým následuje sekce Nástroje, jak vidíme na následujícím snímku obrazovky:

PoatgreSQL Function2

Krok3

Pro vytvoření funkce get_car_Price1() použijeme výše uvedený kód v dotazovacím nástroji a klikneme na tlačítko Provést.

Po provedení výše uvedeného příkazu se nám zobrazí níže uvedené okno se zprávou, že funkce get_car_Price1() byla úspěšně vytvořena do podobné databáze.

Funkce PoatgreSQL

A funkci get_car_Price() můžeme identifikovat v seznamu funkcí, jak vidíme na následujícím snímku obrazovky:

Funkce PoatgreSQL

Poznámka: Pokud nemůžeme identifikovat název funkce, můžeme kliknout pravým tlačítkem myši na uzel Funkce a vybrat možnost Obnovit… 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:

  • Poziční zápis
  • Jmenný zápis
  • Smíšený zápis

Volání funkce pomocí pozičního zápisu

Pokud chceme popsat argumenty v podobném pořadí jako parametry, můžeme funkci volat s pomocí pozičního zápisu.

Podívejme se na ukázkový příklad, abychom pochopili, jak funguje poziční notace při volání konkrétní funkce.

V následujícím příkladu jsou argumenty funkce get_car_price() 26000 a 70000, což odpovídá parametrům Price_from a Price_to.

Výstup

Při implementaci výše uvedeného příkazu získáme následující výstup, který načte ty čtyři řádky, jejichž car_price je v rozmezí 26000 až 70000.

Funkce v databázi LatgreSQL

Když funkce nemá téměř žádné parametry, můžeme funkci zavolat pomocí poziční notace.

Pokud funkce obsahuje několik parametrů, můžeme k volání konkrétní funkce použít jmenný zápis, protože použití jmenného zápisu učiní volání funkce srozumitelnějším.

Volání funkce pomocí pojmenovaného zápisu

V následujícím příkladu zobrazujeme práci s voláním funkce get_car_Price() pomocí pojmenovaného zápisu:

Výstup

Po provedení výše uvedeného příkazu získáme následující výstup, který zobrazí čtyři řádky na základě výše uvedeného rozsahu car_price.

Funkce PoatgreSQL

V již zmíněném zápisu jsme použili znak => pro rozlišení jména a hodnoty argumentu.

PostgreSQL umožňuje starší syntaxi vytvořenou na := kvůli zpětné kompatibilitě, jak můžeme vidět v následujícím příkazu:

Výstup

Po provedení výše uvedeného příkazu dostaneme podobný výstup ve srovnání s výsledkem výše uvedeného příkazu, kde jsme místo ‚:=‘ použili ‚=>‘.

Funkce v databázi FatgreSQL

Volání funkce pomocí smíšeného zápisu

Jde o seskupení pozičního a jmenného zápisu.

Podívejme se na ukázkový příklad, abychom pochopili fungování volání funkce pomocí smíšené notace.

Ve smíšené notaci nemůžeme použít pojmenované parametry před parametry pozičními.

Příklad:

V následujícím příkazu použijeme pojmenovaný zápis pro parametr Price_from jako Price_from=>26000, zatímco pro parametr Price_to jsme použili poziční zápis jako 70000, jak vidíme v následujícím příkazu:

Výstup

Po provedení výše uvedeného příkazu zobrazí PostgreSQL chybu, která říká, že poziční argument nemůže následovat za pojmenovaným argumentem.

Funkce PostgreSQL

Pro vyřešení výše uvedené chyby používáme pro funkci get_car_price() poziční a pojmenovaný zápis, kde 26000 představuje poziční zápis; na druhé straně Price_to=>70000 představuje pojmenovaný zápis:

Výstup

Po provedení výše uvedeného příkazu získáme níže uvedený výstup, který vrátí ta auta, jejichž car_price je v rozmezí 26000 až 70000.

Funkce PostgreSQL

Přehled

V části o funkcích PostgreSQL jsme se seznámili s následujícími tématy:

  • Příkazem CREATE Function jsme vytvořili uživatelsky definovanou funkci pro danou tabulku.
  • Pochopili jsme proces volání uživatelsky definované funkce pomocí různých zápisů, jako jsou polohový, jmenný a smíšený.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *