logo

Funkce PostgreSQL

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
  • The název funkce Parametr se používá k definování názvu funkce.
  • Název funkce se zapisuje za VYTVOŘIT FUNKCI klíčové slovo.
[NEBO VYMĚNIT]
  • Můžeme použít NEBO VYMĚNIT klíčové slovo, pokud chceme změnit aktuální funkci.
  • A je to volitelný parametr.
Funkce
  • Po použití NEBO VYMĚNIT klíčové slovo, můžeme definovat funkce seznam parametrů, které jsou uvedeny v závorkách za Název funkce.
  • A funkce může obsahovat nula nebo několik parametrů.
VRÁTIT SE
  • Můžeme definovat datový typ za VRÁTIT SE klíčové slovo, které se chystáme vrátit z funkce.
  • Může to být základní, složený nebo doménový typ nebo odkaz na typ sloupce tabulky.
Jazyk plpgsql
  • Používá se k definování názvu procedurálního jazyka, ve kterém se funkce provádí.
  • A nejenom plpgsql, PostgreSQL podporuje různé procedurální jazyky.
Tělo funkce
  • The funkční_tělo obsahuje spustitelné části logiky.

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 PostgreSQL Create Function pomocí SQL Shell

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
Funkce PoatgreSQL 2

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.

Funkce PoatgreSQL

A můžeme identifikovat funkci get_car_Price() v Funkce seznam, jak můžeme vidět na následujícím snímku obrazovky:

Funkce PoatgreSQL

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í:

Funkce PoatgreSQL

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:

Funkce PoatgreSQL

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ů.

Funkce PoatgreSQL

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.

Funkce PoatgreSQL

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:

Funkce PoatgreSQL

Jak volat uživatelem definovanou funkci

V PostgreSQL můžeme volat uživatelem definovanou funkci třemi způsoby, které jsou následující:

    Poziční zápis Pojmenovaná notace Smíšený zápis

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.

Funkce PoatgreSQL

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 .

Funkce PoatgreSQL

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 ':=' .

Funkce PoatgreSQL

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 .

Funkce PoatgreSQL

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.

Funkce PoatgreSQL

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é.