PostgreSQL funksjoner
, også kjent som lagrede prosedyrer, tillate deg å utføre operasjoner som normalt vil ta flere forespørsler og rundturer i en enkelt funksjon i databasen. Funksjoner tillate database gjenbruk som andre programmer kan samhandle direkte med dine lagrede prosedyrer i stedet for en midt-tier eller duplisere kode.
funksjoner kan opprettes i språket du ønsker som SQL, PL /PgSQL, C, Python, etc.
Syntax
Den grunnleggende syntaks for å lage en funksjon er som følger:
CREATE [OR REPLACE] funksjonen funksjons (argumenter) returnerer return_datatype AS $ VARIABLE_NAME $ ERKLÆRER erklæring; [...] BEGIN [...] RETURN {VARIABLE_NAME | value} END; SPRÅK plpgsql;.
Hvor, etter
funksjonsnavn
angir navnet på funksjonen
[OR REPLACE] alternativ kan modifisere en eksisterende funksjon.
Funksjonen må inneholde en tilbake
uttalelse.
RETURN
klausul presiserer at datatypen du kommer til å gå tilbake fra funksjonen. return_datatype
kan være en base, kompositt eller domenetype, eller kan referere den typen en tabellkolonne.
funksjons kroppen
inneholder den kjørbare delen.
AS nøkkelordet brukes for å lage en frittstående funksjon. < .no>
plpgsql
er navnet på det språket at funksjonen er implementert i. Her bruker vi dette alternativet for PostgreSQL, Kan det være SQL, C, intern, eller navnet på en brukerdefinert prosessuelle språk. For bakoverkompatibilitet, kan navnet bli omsluttet av enkle anførselstegn.
Eksempel
Følgende eksempel illustrerer skape og å kalle en frittstående funksjon. Denne funksjonen returnerer det totale antallet poster i selskapet tabellen. Vi vil bruke selskapet tabellen, som har følgende poster:
testdb # select * from COMPANY; id | Navn | alder | adressere | lønn ---- + ------- + ----- + ----------- + -------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norge | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | Sør-Hall | 45000 7 | James | 24 | Houston | 10000 (7 p)
Funksjons totalRecords () er som følger:
CREATE OR REPLACE FUNKSJONS totalRecords () returnerer heltall AS $ totalt $ erklære total heltall; BEGIN SELECT count (*) i total fra selskap; TILBAKE totalt; END; $ totalt $ SPRÅK plpgsql;
Når de ovennevnte spørringen utføres, ville resultatet bli:
testdb # CREATE FUNCTION
Nå, la oss utføre et kall til denne funksjonen og sjekke postene i SELSKAPET tabellen
testdb = # velge totalRecords ();
Når de ovennevnte spørringen utføres, resultatet vil være:
totalrecords -------------- 7 (1 rad)