name
jméno (volitelně schématu-kvalifikovaný) postup vytvořit.
argmode
režim argument: IN
INOUT
nebo VARIADIC
. Při vynechání je výchozí hodnota IN
. (OUT
argumenty nejsou v současné době podporovány pro postupy. Místo toho použijte INOUT
.)
argname
název argumentu.,
argtype
datové typy argumentů postupu (případně způsobilé pro schéma), pokud existují. Typy argumentů mohou být základní, kompozitní nebo typy domén nebo mohou odkazovat na typ sloupce tabulky.
V závislosti na implementačním jazyce může být také povoleno zadat „pseudo-typy“, jako je cstring
. Pseudo-typy naznačují, že skutečný typ argumentu je buď neúplně specifikován, nebo mimo sadu běžných datových typů SQL.
typ sloupce je odkazován zápisem
. Použití této funkce může někdy pomoci provést postup nezávislý na změnách definice tabulky.table_name
.,column_name
%Typ
default_expr
výraz, který má být použit jako výchozí hodnota, pokud parametr není zadán. Výraz musí být donucen k typu argumentu parametru. Všechny vstupní parametry následující po parametru s výchozí hodnotou musí mít také výchozí hodnoty.
lang_name
název jazyka, ve kterém je postup implementován., To může být sql
c
internal
, nebo název uživatelem definované procesní jazyk, např. plpgsql
. Uzavření názvu v jednotlivých uvozovkách je zastaralé a vyžaduje odpovídající případ.
TRANSFORM { FOR TYPE
type_name
}}
seznamy, které transformují hovor na postup, by měly platit. Transformuje převod mezi typy SQL a datovými typy specifickými pro jazyk; viz vytvořit transformaci. Implementace procesního jazyka mají obvykle pevně zakódované znalosti o vestavěných typech, takže ty zde nemusí být uvedeny., Pokud implementace procesního jazyka neví, jak zacházet s typem a není dodávána žádná transformace, vrátí se k výchozímu chování pro konverzi datových typů, ale to závisí na implementaci.
SECURITY INVOKER
SECURITY DEFINER
SECURITY INVOKER
označuje, že tento postup je třeba provádět s právy uživatele, který jej volá. To je výchozí. SECURITY DEFINER
určuje, že postup má být proveden s oprávněními uživatele, který jej vlastní.,
Klíčové slovo EXTERNAL
je povoleno pro shodu SQL,ale je volitelné, protože na rozdíl od SQL se tato funkce vztahuje na všechny postupy nejen externí.
SECURITY DEFINER
postup nelze provést transakce řídicí příkazy (například COMMIT
ROLLBACK
, v závislosti na jazyku).,
configuration_parameter
value
SET
klauzule způsobí, že zadaná konfigurační parametr musí být nastaven na zadanou hodnotu v případě, že postup je zapsána, a pak obnoven na předchozí hodnotu, když se postup ukončí. SET FROM CURRENT
uloží hodnotu parametru, který je aktuální, když CREATE PROCEDURE
je proveden jako hodnotu, která má být použita při řízení je zadané.,
Pokud SET
doložka je připojena k řízení, pak účinky SET LOCAL
příkaz proveden uvnitř postup pro stejné proměnné jsou omezeny na postup: konfigurace parametr předchozího hodnota je stále obnovena na postup exit., Nicméně, obyčejný SET
příkaz (bez LOCAL
) přepíše na SET
klauzule, podobně jako pro předchozí SET LOCAL
příkaz: účinky takového příkazu bude přetrvávat po řízení ukončit, pokud není aktuální transakce je vrácena zpět.
Pokud SET
doložka je připojena k řízení, pak tento postup nelze provést transakce řídicí příkazy (například COMMIT
ROLLBACK
, v závislosti na jazyku).,
viz SET a Kapitola 19 pro více informací o povolených názvech a hodnotách parametrů.
definition
řetězcová konstanta definující postup; význam závisí na jazyce. Může to být název interního postupu, cesta k objektovému souboru, příkaz SQL nebo text v procedurálním jazyce.
často je užitečné použít dollar quoting (viz bod 4.1.2.4) k zápisu řetězce definice postupu, spíše než normální syntaxi jediné citace. Bez citace dolaru musí být všechny jednotlivé kotace nebo zpětné lomítka v definici postupu vyvráceny jejich zdvojnásobením.,
obj_file
link_symbol
Tento formulář AS
klauzule se používá pro dynamicky zatížitelné jazyka C postupy při řízení název v jazyce C, zdrojový kód není stejný jako název SQL proceduru. Řetězec obj_file
je název souboru sdílené knihovny obsahující kompilovaný postup C a je interpretován jako příkaz LOAD. Řetězec link_symbol
je symbol odkazu postupu, tedy název postupu ve zdrojovém kódu jazyka C., Pokud je symbol odkazu vynechán, předpokládá se, že je stejný jako název definovaného postupu SQL.
při opakovaných hovorechCREATE PROCEDURE
se soubor načte pouze jednou za relaci. Chcete-li uvolnit a znovu načíst soubor (možná během vývoje), spusťte novou relaci.