Vytvoření uložené procedury ve službě Azure Database for PostgreSQL

Dokončeno

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