Een opgeslagen procedure maken in Azure Database for PostgreSQL
Het maken van een opgeslagen procedure voor een specifieke taak heeft veel voordelen, waaronder het uitbreiden van de functionaliteit van uw Azure for PostgreSQL-database. Gebruik een opgeslagen procedure als u het volgende wilt doen:
- Ontwikkel en test complexe code op één plaats en roep deze waar nodig aan.
- Voer code efficiënt uit. Opgeslagen procedures die hetzelfde resultaat retourneren, zijn efficiënter omdat ze vooraf zijn gecompileerd en opgeslagen in de Azure Database PostgreSQL-server.
- Zorg ervoor dat uw code gemakkelijker te lezen is.
- Neem foutafhandeling op binnen een transactie.
- Verberg complexiteit voor gebruikers.
Hoewel Azure Database for PostgreSQL meerdere programmeertalen ondersteunt, is SQL de systeemeigen taal van PostgreSQL en werkt het beste met de optimizer.
Er wordt een opgeslagen procedure gemaakt met de sleutelwoorden CREATE PROCEDURE. U kunt ook CREATE OR REPLACE PROCEDURE gebruiken om een nieuwe procedure te maken of een procedure met dezelfde naam te vervangen.
Voeg een schemanaam toe om de procedure in een specifiek schema te maken. Anders, gemaakt in het huidige schema. De naam van de procedure moet uniek zijn binnen het schema, inclusief de invoerargumenttypen. U kunt echter overbelasting van procedurenamen door dezelfde naam te geven aan een procedures of functie met verschillende argumenttypen.
De gebruiker die de procedure maakt, is de eigenaar van de procedure. U moet ook de taal opgeven.
Procedures hebben de volgende parameters:
- name - eventueel de schemanaam opnemen.
- argmode : de modus van het argument. Kan IN, INOUT of VARIADIC zijn. De standaardwaarde is IN. OUT wordt niet ondersteund; gebruik in plaats daarvan INOUT. VARDIADIC is een niet-gedefinieerd aantal invoerargumenten van hetzelfde type en moet de laatste invoerargumenten zijn.
- argname - argumentnaam.
- argtype : het gegevenstype argument.
- default_expr: een standaardexpressie (van hetzelfde type) die moet worden gebruikt als de parameter niet is opgegeven. Invoerparameters na een parameter met een standaardwaarde moeten ook standaardwaarden hebben.
- lang_name: de taal die wordt gebruikt om de procedure te schrijven. Kan sql, c, intern of de naam zijn van een door de gebruiker gedefinieerde procedurele taal, bijvoorbeeld plpgsql.
In het volgende voorbeeld wordt een opgeslagen procedure gemaakt met de naam myprocedure, die invoerparameters a en b gebruikt. IN is de standaardinstelling voor parameters, dus we hoeven ze niet expliciet te identificeren als invoerparameters. Wanneer de opgeslagen procedure wordt aangeroepen, worden de waarden die aan deze parameters zijn toegewezen, ingevoegd in mytable.
CREATE PROCEDURE myprocedure (a integer, b integer)
LANGUAGE SQL
AS $$
INSERT INTO mytable VALUES (a, b);
$$;
Het $$
symbool wordt gebruikt om een tekenreeks te starten en te beëindigen. U kunt ook enkele aanhalingstekens gebruiken, maar dit kan problemen veroorzaken met andere programmeertalen.$$