name
a létrehozandó eljárás neve (opcionálisan séma-minősített).
argmode
Az argumentum módja: IN
, INOUT
vagy VARIADIC
. Ha nincs megadva, az alapértelmezett érték IN
. (OUT
az eljárások argumentumai jelenleg nem támogatottak. Használja aINOUT
helyett.)
argname
egy argumentum neve.,
argtype
az eljárás argumentumainak adattípusa(I) (opcionálisan schema-minősített), ha vannak ilyenek. Az argumentumtípusok lehetnek alap, kompozit vagy tartománytípusok, vagy hivatkozhatnak a táblázat oszlop típusára.
a megvalósítási nyelvtől függően engedélyezhető “pszeudo-típusok” megadása is, mint például a cstring
. A pszeudo-típusok azt jelzik, hogy a tényleges argumentumtípus vagy hiányos, vagy a szokásos SQL adattípusok halmazán kívül esik.
az oszlop típusára a
. Ennek a funkciónak a használata néha segíthet abban, hogy az eljárás független legyen a táblázat meghatározásának változásaitól.table_name
írás hivatkozik.,column_name
%TYPE
default_expr
alapértelmezett értékként használható kifejezés, ha a paraméter nincs megadva. A kifejezésnek kényszeríthetőnek kell lennie a paraméter argumentum típusára. Az alapértelmezett értékkel rendelkező paramétert követő összes bemeneti paraméternek alapértelmezett értékekkel kell rendelkeznie.
lang_name
annak a nyelvnek a neve, amelyben az eljárást végrehajtják., Ez lehet sql
, c
, internal
, vagy egy felhasználó által definiált eljárási nyelv neve, például plpgsql
. A név egyetlen idézőjelbe helyezése elavult, megfelelő esetet igényel.
TRANSFORM { FOR TYPE
type_name
} }
listák, amelyek átalakítják a hívást, hogy az eljárás kell alkalmazni. Transforms convert between SQL types and language-specific data types; lásd: átalakítás létrehozása. Az eljárási nyelvi implementációk általában hardcoded ismeretekkel rendelkeznek a beépített típusokról, így ezeket nem kell itt felsorolni., Ha az eljárási nyelv végrehajtása nem tudja, hogyan kell kezelni egy típusa, valamint nem átalakítani szállított, majd vissza az alapértelmezett viselkedés konvertáló adattípusok, de ez attól függ, hogy a végrehajtás.
SECURITY INVOKER
SECURITY DEFINER
SECURITY INVOKER
azt jelzi, hogy az eljárást a hívó felhasználó jogosultságaival kell végrehajtani. Ez az alapértelmezett. SECURITY DEFINER
meghatározza, hogy az eljárást az azt birtokló felhasználó jogosultságaival kell végrehajtani.,
aEXTERNAL
kulcsszó megengedett az SQL konformance esetén, de opcionális, mivel az SQL-től eltérően ez a szolgáltatás nem csak külső eljárásokra vonatkozik.
aSECURITY DEFINER
az eljárás nem hajthatja végre a tranzakciós ellenőrzési nyilatkozatokat (példáulCOMMIT
ésROLLBACK
, a nyelvtől függően).,
configuration_parameter
value
a SET
záradék a megadott konfigurációs paramétert a megadott értékre állítja be, amikor az eljárást beírják, majd az eljárás kilépésekor visszaállítja annak előzetes értékét. SET FROM CURRENT
elmenti az aktuális paraméter értékét, amikor a CREATE PROCEDURE
az eljárás beírásakor alkalmazandó értékként kerül végrehajtásra.,
Ha egySET
záradék van csatolva egy eljáráshoz, akkor az ugyanazon változó eljárásán belül végrehajtott parancs hatásai az eljárásra korlátozódnak: a konfigurációs paraméter előzetes értéke továbbra is visszaáll az eljárás kilépésekor., Azonban egy közönséges SET
parancs (LOCAL
nélkül) felülírja a SET
záradékot, ugyanúgy, mint egy korábbi parancs esetén: az ilyen parancs hatásai az eljárás kilépése után is fennmaradnak, kivéve, ha a A jelenlegi tranzakció visszahúzódik.
Ha egySET
záradékot csatolnak egy eljáráshoz, akkor ez az eljárás nem hajthatja végre a tranzakciós ellenőrzési nyilatkozatokat (példáulCOMMIT
ésROLLBACK
, a nyelvtől függően).,
az engedélyezett paraméternevekkel és értékekkel kapcsolatos további információkért lásd a SET és a 19.fejezetet.
definition
az eljárást meghatározó karakterlánc állandó; a jelentés a nyelvtől függ. Ez lehet egy belső eljárás neve, egy objektumfájl elérési útja, egy SQL parancs vagy egy eljárási nyelvű szöveg.
gyakran hasznos a dollár idézése (lásd a 4.1.2.4.szakaszt) az eljárás definíciós karakterlánc megírásához, nem pedig a szokásos egyetlen idézet szintaxishoz. Dollár idézés nélkül, az eljárás meghatározásában szereplő egyetlen idézőjelet vagy visszalépést meg kell szüntetni, ha megduplázzuk őket.,
obj_file
, link_symbol
a AS
záradéknak ezt a formáját használják dinamikusan betölthető C nyelvi eljárásokhoz, ha a C nyelv forráskódjában szereplő eljárás neve nem azonos az SQL eljárás nevével. A obj_file
karakterlánc a lefordított C eljárást tartalmazó megosztott könyvtárfájl neve, amelyet a LOAD paranccsal értelmeznek. A link_symbol
karakterlánc az eljárás hivatkozási szimbóluma, vagyis az eljárás neve A C nyelvű forráskódban., Ha a link szimbólum elhagyásra kerül, akkor feltételezzük, hogy ugyanaz, mint a definiált SQL eljárás neve.
ismételt CREATE PROCEDURE
a hívások ugyanarra az objektumfájlra vonatkoznak, a fájl csak egyszer töltődik be munkamenetenként. A fájl kirakásához és újratöltéséhez (talán fejlesztés közben) indítson el egy új munkamenetet.