Jak vytvořit uložené procedury v PostgreSQL

Jak Vytvorit Ulozene Procedury V Postgresql



S PostgreSQL je možné vytvářet uložené procedury, které definují různé rutiny, které by se měly při volání spustit. Tyto rutiny se skládají z příkazů SQL, které provádějí definované úlohy ve vaší databázi. Můžete například vytvořit uloženou proceduru, která aktualizuje hodnoty ve vaší tabulce, když ji zavoláte.

Uložené procedury pomáhají s optimalizací databáze a při zvyšování znovupoužitelnosti. Místo toho, abyste museli provádět stejný dotaz, můžete vytvořit úlohu jako uloženou proceduru, kterou budete volat, kdykoli to bude potřeba. Vše o uložených procedurách se dozvíte na konci tohoto příspěvku.

Práce s uloženými procedurami v PostgreSQL

Jako uživatel PostgreSQL jste si možná všimli, že funkce PostgreSQL neprovádějí transakce. I když je možné vytvořit transakci, její potvrzení nebo vrácení do předchozího stavu není možné. Tato omezení jsou však obejita pomocí uložených procedur.







Zde je základní syntaxe pro vytvoření uložené procedury v PostgreSQL:



PROCEDUR VYTVOŘIT NEBO NAHRADIT PROCEDURACE název_procedury(

parametr[y] datový_typ

)

JAZYK plpsql;

JAKO $$

PROHLÁSIT

variables_if_any data_type

ZAČÍT

logika

KONEC;

$$

Klíčové věci, které je třeba poznamenat z dané syntaxe, jsou „název_procedury“, což je název, který použijete pro uloženou proceduru, parametry, které chcete zahrnout, a jejich datové typy a logika, kterou jsou hlavně příkazy SQL.



Uveďme tři příklady, které vám pomohou pochopit, jak vytvořit uložené procedury v PostgreSQL.





Příklad 1: Uložená procedura pro výpočet druhé mocniny čísla

V našem prvním příkladu vytvoříme uloženou proceduru, která používá příkaz „RAISE NOTICE“ jako způsob tisku výstupu na terminál. Uložená procedura přebírá celočíselnou hodnotu, kterou jí zadáte při jejím volání, a vypočítá její druhou mocninu.

Takto vytvoříme uloženou proceduru:



Náš parametr pojmenujeme jako „num1“ a je to celé číslo. Pro logickou část definujeme, jak získá druhou mocninu „num1“ a uloží ji jako čtvercovou proměnnou. Když příkaz spustíme, dostaneme výstup „CREATE PROCEDURE“, který potvrzuje, že se nám podařilo úspěšně vytvořit uloženou proceduru.

Dalším úkolem je zavolat proceduru a dát jí očekávaný argument.

CALL název_procedury(argumenty);

Získáte výstup CALL ukazující, že uložená procedura byla provedena, a dostáváme očekávaný výstup, který je v tomto případě druhou mocninou argumentu, který jsme přidali.

Příklad 2: Uložená procedura pro vložení hodnot do položky tabulky

Následující dva příklady ukazují, jak vytvořit uloženou proceduru, která pracuje s databázovou tabulkou. Pojďme rychle vytvořit tabulku „studenti“, se kterou budeme pracovat.

Pro tento příklad vytvoříme uloženou proceduru, která uživateli umožní vložit hodnoty do nově vytvořené tabulky. Všimněte si, jak specifikujeme parametry, které očekáváme, že budou přidány jako argumenty, když voláme uloženou proceduru. Kromě toho definujeme logiku, která převezme přidané argumenty a provede příkaz INSERT SQL do tabulky „studenti“.

Dostupné uložené procedury můžeme zkontrolovat spuštěním následujícího příkazu:

\df

První uložená procedura, kterou můžeme vidět z následujícího výstupu, je „add_student“, kterou jsme dříve vytvořili.

Nyní zavoláme uloženou proceduru, abychom ji provedli. Následující obrázek ukazuje, jak máme prázdnou tabulku, ale zavolali jsme uloženou proceduru, abychom přidali prvního studenta:

Pokud uvedeme hodnoty v naší tabulce, všimněte si, že argumenty, které jsme přidali pomocí příkazu call procedure, jsou hodnotami pro našeho prvního studenta v naší tabulce. Takto vytvoříte uloženou proceduru pro vložení hodnot do tabulky.

Všimněte si, že při vytváření uložené procedury musí zadané parametry odpovídat tomu, co se očekává ve vaší tabulce, aby se předešlo chybám. Navíc se musí shodovat datový typ.

Příklad 3: Uložená procedura pro aktualizaci položky tabulky

Nyní vytvoříme další uloženou proceduru, která aktualizuje položku tabulky. Pokud chcete mít rychlý způsob aktualizace hodnot v naší tabulce, můžete vytvořit uloženou proceduru aktualizace takto:

Určete, který sloupec chcete aktualizovat pomocí klíčového slova WHERE a novou hodnotu pomocí klíčového slova SET. Poté musíte přidat klíčové slovo COMMIT, aby změny zůstaly zachovány.

Zavoláme uloženou proceduru aktualizace a přidáme očekávané argumenty: „id_studenta“ a nový kurz.

Pokud uvedeme záznamy v naší tabulce, můžeme ověřit, že máme aktualizovaný kurz pro konkrétního studenta, na kterého jsme cílili. Takto funguje uložená procedura aktualizace.

Závěr

V PostgreSQL můžete vytvořit libovolnou uloženou proceduru. Musíte pouze porozumět syntaxi, kterou budete následovat, a poté definovat svou logiku pro uloženou proceduru. Odtud zavolejte uloženou proceduru a ověřte, zda byla provedena podle očekávání. Tento příspěvek vysvětluje uložené procedury v PostgreSQL a poskytuje příklady, jak je vytvořit.