Crearea unei proceduri stocate în Azure Database for PostgreSQL

Finalizat

Crearea unei proceduri stocate pentru o anumită activitate are multe avantaje, inclusiv extinderea funcționalității bazei de date Azure pentru PostgreSQL. Utilizați o procedură stocată atunci când doriți:

  • Dezvoltați și testați cod complex într-un singur loc, apoi apelați-l acolo unde este necesar.
  • Executați codul eficient. Procedurile stocate care returnează același rezultat sunt mai eficiente, deoarece sunt precompilate și stocate în serverul Azure Database PostgreSQL.
  • Faceți codul mai ușor de citit.
  • Includeți gestionarea erorilor într-o tranzacție.
  • Ascundeți complexitatea de utilizatori.

În timp ce Azure Database for PostgreSQL acceptă mai multe limbaje de programare, SQL este limbajul nativ al PostgreSQL și funcționează cel mai bine cu optimizatorul.

O procedură stocată este creată cu cuvintele cheie CREATE PROCEDURE. Alternativ, utilizați CREATE OR REPLACE PROCEDURE pentru a crea o procedură nouă sau pentru a înlocui o procedură cu același nume.

Includeți un nume de schemă pentru a crea procedura într-o anumită schemă. În caz contrar, creat în schema curentă. Numele procedurii trebuie să fie unic în cadrul schemei, inclusiv tipurile de argumente de intrare. Cu toate acestea, puteți supraîncărca numele procedurilor dând același nume unui procedeu sau unei funcții cu tipuri diferite de argumente.

Utilizatorul care creează procedura este proprietarul procedurii. De asemenea, trebuie să specificați limba.

Procedurile iau următorii parametri:

  • Nume - Includeți opțional numele schemei.
  • argmode - modul argumentului. Poate fi IN, INOUT sau VARIADIC. Valoarea implicită este IN. OUT nu este acceptat; folosiți INOUT în schimb. VARDIADIC este un număr nedefinit de argumente de intrare de același tip și trebuie să fie ultimele argumente de intrare.
  • argname - numele argumentului.
  • argtype - tipul de date al argumentului.
  • default_expr - o expresie implicită (de același tip) care trebuie utilizată dacă parametrul nu este specificat. Parametrii de intrare care urmează după un parametru cu o valoare implicită trebuie să aibă și valori implicite.
  • lang_name - limbajul folosit pentru a scrie procedura. Poate fi sql, c, intern sau numele unui limbaj procedural definit de utilizator, de exemplu, plpgsql.

În exemplul următor, este creată o procedură stocată numită myprocedure, care preia parametrii de intrare a și b. IN este implicit pentru parametri, deci nu trebuie să-i identificăm în mod explicit ca parametri de intrare. Când procedura stocată este apelată, valorile atribuite acestor parametri sunt inserate în mytable.

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

Simbolul $$ este folosit pentru a începe și a termina un șir. De asemenea, puteți utiliza ghilimele simple, dar poate cauza probleme cu alte limbaje de programare, așa că $$ este de preferat.