name
nimi (mahdollisesti kaava-pätevyys) menettelyn luoda.
argmode
– tilassa argumentti: IN
, INOUT
tai VARIADIC
. Jos jätetään pois, oletusarvo on IN
. (OUT
argumentit eivät tällä hetkellä tue menettelyjä. Käytä INOUT
sen sijaan.)
argname
nimi argumentti.,
argtype
tietotyyppi(s) menettelyn perustelut (mahdollisesti kaava-pätevä), jos sellaisia on. Argumenttityypit voivat olla base -, composite-tai domain-tyyppejä tai ne voivat viitata taulukon sarakkeen tyyppiin.
toteutuksesta Riippuen kieli saattaa myös olla oikeus määritellä ”pseudo-tyyppejä”, kuten cstring
. Pseudotyypit osoittavat, että varsinainen argumenttityyppi on joko epätäydellisesti määritelty tai tavallisten SQL-tietotyyppien joukon ulkopuolella.
kolumnin tyyppiin viitataan kirjoittamalla
. Tämän ominaisuuden käyttäminen voi joskus auttaa tekemään menettelystä riippumattoman taulukon määritelmän muutoksista.table_name
.,column_name
% TYPE
default_expr
ilmaus voidaan käyttää oletusarvo, jos parametria ei ole määritetty. Lausekkeen on oltava pakotettava parametrin argumenttityyppiin. Kaikilla oletusarvolla varustettua parametria seuraavilla syöttöparametreilla on oltava myös oletusarvot.
lang_name
kielen nimi, että menettely on toteutettu., Se voi olla sql
, c
, internal
, nimen tai käyttäjän määrittämän menettelyn kielen, esim. plpgsql
. Liittäen nimi puolilainausmerkeissä on vanhentunut ja vaatii vastaava tapaus.
TRANSFORM { FOR TYPE
type_name
}
luetteloita, jotka muuttavat kutsun menettelyyn, olisi sovellettava. Muuntaa muuntaa välillä SQL tyypit ja kielikohtaisia tietotyyppejä; katso luo muunnos. Prosessikielen toteutuksissa on yleensä hardcoded tietoa sisäänrakennetuista tyypeistä, joten niitä ei tarvitse luetella täällä., Jos käsittelykieli täytäntöönpano ei tiedä, miten käsitellä tyyppi ja ei-muunnos on mukana, se putoaa takaisin oletuksena käyttäytymistä muuntaa tietotyypit, mutta tämä riippuu toteutuksesta.
SECURITY INVOKER
SECURITY DEFINER
SECURITY INVOKER
osoittaa, että menettely ei voida suorittaa oikeuksilla käyttäjä, joka kutsuu sitä. Se on oletusarvo. SECURITY DEFINER
täsmentää, että menettely on suoritettava sen omistavan käyttäjän oikeuksilla.,
avain sana EXTERNAL
on sallittu SQL-conformance, mutta se on valinnainen, koska, toisin kuin SQL, tämä ominaisuus koskee kaikkia menettelyjä ei ole vain ulkoisia.
SECURITY DEFINER
menettely voi suorittaa liiketoimen ohjaus lausuntoja (esimerkiksi COMMIT
ja ROLLBACK
riippuen kieli).,
configuration_parameter
value
SET
lauseke aiheuttaa määritetyn kokoonpanon parametri voidaan asettaa määritetyn arvon, kun menettely on tullut, ja sitten palauttaa sen ennen arvo, kun menettely poistuu. SET FROM CURRENT
tallentaa parametrin arvo, joka on nykyinen, kun CREATE PROCEDURE
toteutetaan, kuten arvo, jota sovelletaan, jos menettely on tullut.,
– Jos SET
lauseke on kiinnitetty menettely, sitten vaikutukset SET LOCAL
komennon sisällä menettely sama muuttuja on rajoitettu menettely: kokoonpano parametri on ennen arvo on edelleen palauttaa milloin menettely exit., Kuitenkin, tavallinen SET
komento (ilman LOCAL
) ohittaa SET
lauseke, niin paljon kuin se tekisi aiempaan SET LOCAL
komento: vaikutukset, kuten komento jatkuu sen jälkeen, kun menettely poistu, ellei nykyinen kauppa on rullattu takaisin.
– Jos SET
lauseke on kiinnitetty menettelyn, niin että menettely ei voi suorittaa liiketoimen ohjaus lausuntoja (esimerkiksi COMMIT
ja ROLLBACK
riippuen kieli).,
katso asetuksesta ja luvusta 19 lisätietoja sallituista parametrin nimistä ja arvoista.
definition
merkkijono vakio määritellään menettely; merkitys riippuu kielen. Se voi olla sisäisen menettelyn nimi, polku esine-tiedoston, SQL-komento, tai tekstiä menettelyn kielen.
Se on usein hyödyllistä käyttää dollari lainaten (ks. Kohta 4.1.2.4) kirjoittaa menettelyn määritelmä merkkijono, sijaan normaali yksi lainaus syntaksi. Ilman dollarin lainaan, kaikki yhden lainauksia tai kenoviivoja menettelyn määritelmä on karannut kaksinkertaistamalla niitä.,
obj_file
, link_symbol
Tämä muoto AS
lauseketta käytetään dynaamisesti ladattavina C-kieli menettelyjä kun menettely nimi C-kielellä lähde koodi ei ole sama kuin nimi SQL-menettelyä. Merkkijono obj_file
on nimi shared library-tiedosto, joka sisältää koottu C menettely, ja tulkitaan varten LATAA-komennolla. Merkkijono link_symbol
menettely on linkki symboli, joka on, nimi menettelyn C-kielellä lähdekoodia., Jos linkkisymboli jätetään pois, sen oletetaan olevan sama kuin määriteltävän SQL-menettelyn nimi.
kun toistetaan CREATE PROCEDURE
puhelut viittaavat samaan objektitiedostoon, tiedosto ladataan vain kerran istunnossa. Jos haluat purkaa ja ladata tiedoston uudelleen (ehkä kehityksen aikana), Aloita uusi istunto.