Tworzenie procedury składowanej w usłudze Azure Database for PostgreSQL

Ukończone

Tworzenie procedury składowanej dla określonego zadania ma wiele zalet, w tym rozszerzenie funkcjonalności bazy danych Azure for PostgreSQL. Użyj procedury składowanej, jeśli chcesz:

  • Utwórz i przetestuj złożony kod w jednym miejscu, a następnie w razie potrzeby wywołaj go.
  • Wydajne wykonywanie kodu. Procedury składowane zwracające ten sam wynik są bardziej wydajne, ponieważ są wstępnie skompilowane i przechowywane na serwerze usługi Azure Database PostgreSQL.
  • Ułatwi odczytywanie kodu.
  • Uwzględnij obsługę błędów w ramach transakcji.
  • Ukrywanie złożoności przed użytkownikami.

Ponadto usługa Azure Database for PostgreSQL obsługuje wiele języków, w tym:

  • SQL
  • PL/pgSQL
  • PL/Python
  • PL/Perl i PL/PerlU
  • PL/Python
  • PL/TCL i PL/TCLU

Sql jest językiem natywnym bazy danych PostgreSQL i działa najlepiej z optymalizatorem.

Procedura składowana jest tworzona przy użyciu słów kluczowych CREATE PROCEDURE. Alternatywnie użyj metody CREATE OR REPLACE PROCEDURE, aby utworzyć nową procedurę lub zastąpić procedurę tą samą nazwą.

Dołącz nazwę schematu, aby utworzyć procedurę w określonym schemacie. W przeciwnym razie zostanie utworzony w bieżącym schemacie. Nazwa procedury musi być unikatowa w schemacie, w tym typy argumentów wejściowych. Można jednak przeciążyć nazwy procedur, podając tę samą nazwę procedur lub funkcji z różnymi typami argumentów.

Użytkownik tworzący procedurę jest właścicielem procedury. Należy również określić język.

Procedury przyjmują następujące parametry:

  • name — opcjonalnie dołącz nazwę schematu.
  • argmode — tryb argumentu. Może być IN, INOUT lub VARIADIC. Wartość domyślna to IN. Wyjście nie jest obsługiwane; Zamiast tego należy użyć funkcji INOUT. VARDIADIC jest niezdefiniowaną liczbą argumentów wejściowych tego samego typu i musi być ostatnimi argumentami wejściowymi.
  • argname — nazwa argumentu.
  • argtype — typ danych argumentu.
  • default_expr — wyrażenie domyślne (tego samego typu), które ma być używane, jeśli parametr nie jest określony. Parametry wejściowe po parametrze z wartością domyślną muszą również mieć wartości domyślne.
  • lang_name — język używany do pisania procedury. Może to być sql, c, internal lub nazwa języka proceduralnego zdefiniowanego przez użytkownika, na przykład plpgsql.

W poniższym przykładzie tworzona jest procedura składowana o nazwie myprocedure, która przyjmuje parametry wejściowe a i b. Parametr IN jest domyślny dla parametrów, więc nie musimy jawnie identyfikować ich jako parametrów wejściowych. Po wywołaniu procedury składowanej wartości przypisane do tych parametrów są wstawiane do tabeli mytable.

CREATE PROCEDURE myprocedure (a integer, b integer)
    LANGUAGE SQL
    AS $$
        INSERT INTO mytable VALUES (a, b);
    $$;

Symbol służy do uruchamiania $$ i kończenia ciągu. Można również użyć pojedynczych cudzysłowów, ale może powodować problemy z innymi językami programowania, dlatego $$ jest preferowana.