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?
- Co je příkaz PostgreSQL CREATE Function?
- Syntaxe příkazu PostgreSQL CREATE Function
- Example of PostgreSQL Create Function Command
- Creating a new function
- Vytvoření funkce v PostgreSQL
- Vytvoření funkce v PostgreSQL pomocí aplikace pgAdmin
- 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:
- Creating a function using SQL Shell(psql)
- 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.
- How to Call a user-defined function
- Volání funkce pomocí pozičního zápisu
- Volání funkce pomocí pojmenovaného zápisu
- Volání funkce pomocí smíšeného zápisu
- Přehled
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 |
|
|
|
Function |
|
RETURN |
|
Language plpgsql |
|
Function_body |
|
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:
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.
A funkci get_car_Price() můžeme identifikovat v seznamu funkcí, jak vidíme na následujícím snímku obrazovky:
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:
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.
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.
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:
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.
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.
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 ‚=>‘.
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.
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.
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ý.