Creare una stored procedure in Database di Azure per PostgreSQL

Completato

La creazione di una stored procedure per un'attività specifica presenta molti vantaggi, tra cui l'estensione della funzionalità del database di Azure per PostgreSQL. Usare una stored procedure quando si vuole:

  • Sviluppare e testare codice complesso in un'unica posizione, quindi chiamarlo dove necessario.
  • Eseguire codice in modo efficiente. Le stored procedure che restituiscono lo stesso risultato sono più efficienti perché vengono precompilate e archiviate nel server PostgreSQL di Database di Azure.
  • Rendere il codice più facile da leggere.
  • Includere la gestione degli errori all'interno di una transazione.
  • Nascondere la complessità agli utenti.

Anche se Database di Azure per PostgreSQL supporta più linguaggi di programmazione, SQL è il linguaggio nativo di PostgreSQL e funziona meglio con l’ottimizzatore.

Viene creata una stored procedure con le parole chiave CREATE PROCEDURE. In alternativa, usare CREATE OR REPLACE PROCEDURE per creare una nuova routine o sostituire una routine con lo stesso nome.

Includere un nome di schema per creare la routine in uno schema specifico. In caso contrario, viene creato nello schema corrente. Il nome della routine deve essere univoco all'interno dello schema, inclusi i tipi di argomento di input. È tuttavia possibile eseguire l'overload dei nomi di routine assegnando lo stesso nome a una routine o a una funzione con tipi di argomento diversi.

L'utente che crea la routine ne diventa il proprietario. È inoltre necessario specificare il linguaggio.

Le routine accettano i parametri seguenti:

  • name: se si desidera, è possibile includere il nome dello schema.
  • argmode: modalità dell'argomento. Può essere IN, INOUT o VARIADIC. Il valore predefinito è IN. OUT non è supportato, usare INOUT. VARDIADIC è un numero non definito di argomenti di input dello stesso tipo e deve corrispondere agli ultimi argomenti di input.
  • argname: nome dell'argomento.
  • argtype: tipo di dati dell'argomento.
  • default_expr: espressione predefinita (dello stesso tipo) da usare se il parametro non è specificato. Anche i parametri di input che seguono un parametro con un valore predefinito devono avere valori predefiniti.
  • lang_name: il linguaggio usato per scrivere la routine. Può essere sql, c, interno o il nome di un linguaggio procedurale definito dall'utente, ad esempio plpgsql.

Nell'esempio seguente viene creata una stored procedure denominata myprocedure, che accetta parametri di input a e b. IN è l'impostazione predefinita per i parametri, quindi non è necessario identificarli in modo esplicito come parametri di input. Quando viene chiamata la stored procedure, i valori assegnati a questi parametri vengono inseriti in mytable.

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

Il simbolo $$ viene usato per iniziare e terminare una stringa. È anche possibile usare virgolette singole, ma può causare problemi con altri linguaggi di programmazione, quindi $$ è preferibile.