V této části porozumíme fungování PostgreSQL funkce, funkce vytvoření a podívejte se na příklad v reálném čase Příkaz PostgreSQL CREATE FUNCTION pomocí různých nástrojů PostgreSQL, jako je např pgadmin4 a SQL shell (PSQL).
A viz příklad volání a uživatelsky definovaná funkce jako poziční zápis jmenovaný zápis, smíšený zápis.
Co je funkce PostgreSQL?
Funkce PostgreSQL nebo a uložené procedury je sada SQL a procedurálních příkazů jako např deklarace, přiřazení, smyčky, tok řízení atd. uloženy na databázovém serveru a lze je zapojit pomocí SQL rozhraní . A je také známý jako PostgreSQL uložené procedury .
Můžeme vytvářet funkce PostgreSQL v serverových jazycích, např. SQL , PL/pgSQL , C , Krajta atd.
Umožňuje nám provádět operace, které by obecně vyžadovaly různé příkazy a okružní cesty ve funkci v rámci databáze.
Co je příkaz PostgreSQL CREATE Function?
V PostgreSQL, pokud chceme zadat novou uživatelsky definovanou funkci, můžeme použít VYTVOŘIT FUNKCI příkaz.
Syntaxe příkazu PostgreSQL CREATE Function
Syntaxe pro Příkaz funkce PostgreSQL CREATE je následující:
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; $$
Ve výše uvedené syntaxi jsme použili následující parametry, jak je uvedeno v tabulce níže:
objektivní java
Parametry | Popis |
---|---|
název_funkce |
|
[NEBO VYMĚNIT] |
|
Funkce |
|
VRÁTIT SE |
|
Jazyk plpgsql |
|
Tělo funkce |
|
Příklad PostgreSQL příkazu Create Function
Podívejme se na jiný příklad, abychom pochopili fungování Funkce PostgreSQL CREATE příkaz.
Bereme Auto stůl z Javatpoint databáze, vytvořené v PostgreSQL Tutorial.
Vytvoření nové funkce
V níže uvedeném příkazu vytváříme novou funkci, která počítá Auta jehož Car_Price mezi Cena_od a Cena_do parametry:
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 funkce je rozdělena do dvou hlavních částí, které jsou Záhlaví a tělo funkce .
Použili jsme následující parametry v Záhlaví sekce:
- Primárně zadáváme název funkce jako get_car_Price(), což se píše za vytvořit funkci
- Poté, get_car_Price() funkce obsahuje dva parametry Cena_od a Price_to, s celočíselným datovým typem.
- Poté, get_car_Price() funkce načte celé číslo definované podmínkou return int.
- A nakonec jsme použili funkční jazyk jako plpgsql .
Použili jsme následující parametry v Tělo funkce sekce:
- Použili jsme řetězec uvozovaný dolarem konstantní ilustrace ve funkční části, která začíná $$ a končí s $$ .
- Mezi $$ podepsat, můžeme umístit blok, který kryje prohlášení a logika funkce .
- V deklaračním bloku jsme deklarovali proměnnou tzv počet aut, která ukládá vozy vybrané z Auto
- V těle sekce bloku jsme použili VYBERTE DO příkaz pro výběr Ceny vozů, jejichž hodnoty jsou mezi Cena_od a Cena_do a dát výstup do Počet aut
- Na konci bloku jsme použili VRÁTIT SE příkaz k získání
Vytvoření funkce v PostgreSQL
V PostgreSQL můžeme vytvořit funkci dvěma způsoby:
PostgreSQL Create Function pomocí pgAdmin
Budeme postupovat podle níže uvedeného postupu, abychom vytvořili funkci v pgAdmin:
Krok 1
Nejprve otevřeme nejnovější verzi pgAdmin v našem místním systému a přejdeme do stromu objektů a připojíme se k Javatpoint ukázková databáze, ve které chceme funkci vytvořit.
Krok 2
Poté kliknutím na otevřeme dotazovací nástroj Dotazovací nástroj následoval sekci Nástroje, jak můžeme vidět na níže uvedeném snímku obrazovky:
c struktura ve struktuře
Krok 3
Chcete-li vytvořit get_car_Price1() funkce, použijeme výše uvedený kód v dotazovací nástroj a klikněte na Vykonat knoflík.
Po implementaci výše uvedeného příkazu dostaneme níže uvedené okno se zprávou zobrazující tuto funkci get_car_Price1() byl vytvořené úspěšně do podobné databáze.
A můžeme identifikovat funkci get_car_Price() v Funkce seznam, jak můžeme vidět na následujícím snímku obrazovky:
Poznámka: Pokud nemůžeme identifikovat název funkce, můžeme klepnout pravým tlačítkem myši na uzel Funkce a vybrat položku nabídky Obnovit... pro oživení seznamu funkcí:
Vytvoření funkce pomocí SQL Shell (psql)
Při vytváření tabulky budeme postupovat podle níže uvedeného postupu psql :
Krok 1
- Nejprve otevřeme psql v našem lokálním systému a připojíme se k databázi, kde chceme funkci vytvořit.
- Vytvoříme tabulku v javatpoint databázi, kterou jsme vytvořili dříve v tutoriálu PostgreSQL.
Krok 2
- Pro připojení databáze zadáme následující příkaz:
c javatpoint
Výstup
Po provedení výše uvedeného příkazu získáme následující výstup:
Poznámka: Pokud k vytvoření funkce zadáme podobný příkaz jako výše, v psql se zobrazí níže uvedená chyba, která zní: funkce get_car_price již existuje se stejnými typy argumentů.
Proto, abychom tuto chybu vyřešili, vytvoříme novou funkci jako get_car_Price1 () v dalším kroku.
Krok 3
java nahrazuje vše
Zadáme níže uvedený příkaz pro vytvoření funkce tak jako get_car_Price1 () v javatpoint databáze.
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$# $$;
Výstup
Při implementaci výše uvedeného příkazu získáme následující výstup, který zobrazuje, že get_car_Price_count1() funkce byla úspěšně vytvořena.
Krok 4
Pomocí níže uvedeného příkazu můžeme vypsat všechny uživatelem definované funkce ve stávající databázi.
javatpoint=# df
Výstup
Po provedení výše uvedeného příkazu získáme níže uvedený výstup:
Jak volat uživatelem definovanou funkci
V PostgreSQL můžeme volat uživatelem definovanou funkci třemi způsoby, které jsou následující:
Volání funkce pomocí polohového zápisu
Pokud chceme argumenty popsat v podobném pořadí jako parametry, můžeme zavolat funkci s poziční notace Pomoc.
df loc
Podívejme se na ukázkový příklad, abychom pochopili Poziční zápis pracuje na volání konkrétní funkce.
V níže uvedeném příkladu je get_car_price() argumenty jsou 26 000 a 70 000 , což je ekvivalentní k Cena_od a Cena_do parametry.
Select get_car_Price(26000,70000);
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 mezi 26 000 až 70 000.
Když funkce nemá téměř žádné parametry, můžeme funkci zavolat pomocí poziční zápis .
Pokud funkce obsahuje několik parametrů, můžeme použít jmenovaný zápis zavolat konkrétní funkci, protože pomocí jmenovaný zápis bude volání funkce srozumitelnější.
Volání funkce pomocí pojmenovaného zápisu
V níže uvedeném příkladu zobrazujeme fungování volání get_car_Price() funkce pomocí pojmenovaného zápisu:
select get_car_Price( Price_from => 26000, Price_to => 70000 );
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 .
Ve výše uvedené notaci jsme použili => rozlišit argumenty jméno a hodnotu .
PostgreSQL umožňuje starší vytvořenou syntaxi na := pro zpětná kompatibilita , jak můžeme vidět v následujícím příkazu:
select get_car_Price( Price_from := 26000, Price_to := 70000 );
Výstup
Po provedení výše uvedeného příkazu získáme podobný výstup jako výsledek výše uvedeného příkazu, kde použijeme ' =>' namísto ':=' .
Volání funkce pomocí smíšeného zápisu
Jedná se o seskupení poziční a pojmenované zápisy.
Podívejme se na ukázkový příklad, abychom pochopili fungování Volání funkce pomocí smíšeného zápisu.
V smíšený zápis , nemůžeme použít s názvem Parametry před polohové parametry .
Například:
V níže uvedeném příkazu použijeme pojmenovaný pojem pro Cena_od parametr jako Price_from=>26000, zatímco pro Cena_do parametr jsme použili poziční představa tak jako 70 000 , jak můžeme vidět v níže uvedeném příkazu:
šedý kód
select get_car_Price(Price_from=>26000,70000);
Výstup
Po provedení výše uvedeného příkazu PostgreSQL vyvolá chybu, která říká, že poziční argument nemůže následovat po jmenovaném argumentu .
K vyřešení výše uvedené chyby používáme poziční a jmenný zápis pro get_car_price() funkce, kde 26 000 se používá k reprezentaci Poziční zápis; na druhou stranu, Price_to=>70000 se používá k reprezentaci jmenovaný zápis :
select get_car_Price(26000,Price_to=>70000);
Výstup
Po provedení výše uvedeného příkazu získáme níže uvedený výstup, který vrátí ty vozy, jejichž car_price se pohybuje mezi 26 000 až 70 000.
Přehled
V Funkce PostgreSQL části jsme se naučili tato témata:
- Použili jsme Funkce CREATE příkaz k vytvoření uživatelem definované funkce pro konkrétní tabulku.
- Pochopili jsme proces volání uživatelem definované funkce s pomocí různých zápisů jako např Poziční, pojmenované a smíšené.