name
navnet (eventuelt skema-kvalificeret) af proceduren for at oprette.
argmode
Den måde et argument: IN
INOUT
, eller VARIADIC
. Hvis udeladt, er standard IN
. (OUT
argumenter understøttes i øjeblikket ikke for procedurer. Brug INOUT
i stedet.)
argname
navnet på et argument.,
argtype
datatypen(e) af procedurens argumenter (eventuelt skema-kvalificeret), hvis nogen. Argumenttyperne kan være base -, komposit-eller domænetyper eller kan henvise til typen af en tabelkolonne.
afhængigt af implementeringssproget kan det også være tilladt at angive “pseudotyper” såsom cstring
. Pseudotyper angiver, at den faktiske argumenttype enten er ufuldstændigt specificeret eller uden for sættet med almindelige s .l-datatyper.
typen af en kolonne henvises til ved at skrive
. Brug af denne funktion kan undertiden hjælpe med at gøre en procedure uafhængig af ændringer i definitionen af en tabel.table_name
.,column_name
%TYPE
default_expr
et udtryk, der skal bruges som standardværdi, hvis parameteren ikke er angivet. Udtrykket skal være tvang til parameterens argumenttype. Alle inputparametre, der følger en parameter med en standardværdi, skal også have standardværdier.
lang_name
navnet på det sprog, som proceduren er implementeret i., Det kan være sql
c
internal
, eller navnet på en bruger-defineret sprog, fx, plpgsql
. Omslutter navnet i enkelte citater er forældet og kræver matchende sag.
TRANSFORM { FOR TYPE
type_name
}}
lister, der omdanner et opkald til proceduren, bør finde anvendelse. Transformerer Konverter mellem S .l-typer og Sprogspecifikke datatyper; se CREATE TRANSFORM. Proceduremæssige sprogimplementeringer har normalt hardkodet viden om de indbyggede typer, så de behøver ikke at blive opført her., Hvis en proceduremæssig sprogimplementering ikke ved, hvordan man håndterer en type, og der ikke leveres nogen transformation, falder den tilbage til en standardadfærd til konvertering af datatyper, men dette afhænger af implementeringen.
SECURITY INVOKER
SECURITY DEFINER
SECURITY INVOKER
angiver, at proceduren skal udføres med rettighederne hørende til den bruger, der kalder det. Det er standard. SECURITY DEFINER
angiver, at proceduren skal udføres med rettighederne for den bruger, der ejer den.,
nøgleordet EXTERNAL
er tilladt for S .l-overensstemmelse, men det er valgfrit, da denne funktion i modsætning til I S .l gælder for alle procedurer, ikke kun eksterne.
SECURITY DEFINER
procedure kan ikke udføre transaktionen kontrol-sætninger (for eksempel: COMMIT
og ROLLBACK
, afhængigt af sproget).,
configuration_parameter
value
SET
klausul medfører, at den specificerede konfigurationsparameter indstilles til den specificerede værdi, når proceduren indtastes, og derefter gendannes til dens tidligere værdi, når proceduren afsluttes. SET FROM CURRENT
gemmer værdien af den parameter, der er aktuel, når CREATE PROCEDURE
udføres som den værdi, der skal anvendes, når proceduren indtastes.,
Hvis SET
bestemmelse er knyttet til en procedure, så effekten af en SET LOCAL
kommando udføres inde i proceduren for den samme variabel er begrænset til den procedure: konfiguration parameter forudgående værdi stadig er restaureret på procedure exit., Men et almindeligt SET
kommando (uden LOCAL
) tilsidesætter SET
klausul, meget, som det ville gøre for en tidligere SET LOCAL
kommando: virkningerne af en sådan kommando vil fortsætte efter proceduren exit, medmindre den aktuelle transaktion er rullet tilbage.
Hvis SET
bestemmelse er knyttet til en procedure, da denne procedure ikke kan udføre transaktionen kontrol-sætninger (for eksempel: COMMIT
og ROLLBACK
, afhængigt af sproget).,
se sæt og kapitel 19 for at få flere oplysninger om tilladte parameternavne og-værdier.
definition
en strengkonstant, der definerer proceduren; betydningen afhænger af sproget. Det kan være et internt procedurenavn, stien til en objektfil, en s .l-kommando eller tekst på et proceduremæssigt sprog.
det er ofte nyttigt at bruge dollarcitat (se Afsnit 4.1.2.4) til at skrive proceduredefinitionsstrengen i stedet for den normale enkelt citatsynta.. Uden dollarcitat skal enkelte citater eller tilbageslag i proceduredefinitionen undgås ved at fordoble dem.,
obj_file
link_symbol
Denne form for AS
bestemmelse anvendes til dynamisk downloades C-sprog procedurer, når procedure navn i C-sproget kildekoden er ikke det samme som navnet på den SQL procedure. Strengen obj_file
er navnet på den delte biblioteksfil, der indeholder den kompilerede C-procedure, og fortolkes som For LOAD-kommandoen. Strengen link_symbol
er procedurens linksymbol, det vil sige navnet på proceduren i C-sprogets kildekode., Hvis linksymbolet udelades, antages det at være det samme som navnet på den s .l-procedure, der defineres.
når gentaget CREATE PROCEDURE
opkald henviser til den samme objektfil, indlæses filen kun en gang pr. For at losse og genindlæse filen (måske under udvikling) skal du starte en ny session.