Vytvoření uložené procedury ve službě Azure Database for PostgreSQL
Vytvoření uložené procedury pro konkrétní úlohu má řadu výhod, včetně rozšíření funkcí databáze Azure for PostgreSQL. Pokud chcete, použijte uloženou proceduru:
- Vyvíjejte a testujte složitý kód na jednom místě a pak ho podle potřeby volejte.
- Efektivně spouštět kód. Uložené procedury, které vracejí stejný výsledek, jsou efektivnější, protože jsou předkompilované a uložené na serveru Azure Database PostgreSQL.
- Usnadněte si čtení kódu.
- Zahrnout zpracování chyb v rámci transakce.
- Skrytí složitosti před uživateli
Azure Database for PostgreSQL sice podporuje více programovacích jazyků, ale SQL je nativní jazyk PostgreSQL a funguje nejlépe s optimalizátorem.
Uložená procedura se vytvoří s klíčovými slovy CREATE PROCEDURE. Případně můžete pomocí příkazu CREATE OR REPLACE PROCEDURE vytvořit novou proceduru nebo nahradit proceduru stejným názvem.
Zahrňte název schématu pro vytvoření procedury do konkrétního schématu. V opačném případě se vytvoří v aktuálním schématu. Název procedury musí být v rámci schématu jedinečný, včetně typů vstupních argumentů. Názvy procedur však můžete přetížit tak, že dáte stejný název procedurám nebo funkci s různými typy argumentů.
Uživatel, který proceduru vytvoří, je vlastníkem procedury. Musíte také zadat jazyk.
Postupy mají následující parametry:
- name – volitelně uveďte název schématu.
- argmode - režim argumentu. Může to být IN, INOUT nebo VARIADIC. Výchozí hodnota je IN. OUT není podporováno; místo toho použijte INOUT. VARDIADIC je nedefinovaný počet vstupních argumentů stejného typu a musí se jednat o poslední vstupní argumenty.
- argname – název argumentu.
- argtype – datový typ argumentu.
- default_expr – výchozí výraz (stejného typu), který se použije, pokud parametr není zadaný. Vstupní parametry, které následují za parametrem s výchozí hodnotou, musí mít také výchozí hodnoty.
- lang_name – jazyk použitý k zápisu procedury. Může to být sql, c, internal nebo název uživatelem definovaného procedurálního jazyka, například plpgsql.
V následujícím příkladu se vytvoří uložená procedura s názvem myprocedure, která přebírá vstupní parametry a a b. In je výchozí hodnota parametrů, takže je nemusíme explicitně identifikovat jako vstupní parametry. Při volání uložené procedury se hodnoty přiřazené k těmto parametrům vloží do tabulky.
CREATE PROCEDURE myprocedure (a integer, b integer)
LANGUAGE SQL
AS $$
INSERT INTO mytable VALUES (a, b);
$$;
Symbol $$
slouží k zahájení a ukončení řetězce. Můžete také použít jednoduché uvozovky, ale může to způsobovat problémy s jinými programovacími jazyky, takže $$
je upřednostňované.