Syntax

popis

vytvoří uložený postup. Ve výchozím nastavení je rutinaspojené s výchozí databází. Chcete-li routineexplicitně přiřadit k dané databázi, zadejte název jako db_name.sp_namepři jeho vytvoření.

při vyvolání rutiny se provede implicitní použití db_name(andundone při ukončení rutiny). Příčiny rutiny majípři spuštění dané výchozí databáze. Použijte příkazyinstalované rutiny jsou zakázány.,

po vytvoření uloženého postupu jej vyvoláte použitím příkazu CALL (viz volání).

pro provedení příkazu CREATE PROCEDURE není nutné mít oprávnění CREATE ROUTINE. Ve výchozím nastavení MariaDBautomatically udělujeALTER ROUTINE aEXECUTE oprávnění therotine creator. Viz také uložená rutinní oprávnění.,

DEFINER a ZABEZPEČENÍ SQL klauzule určit kontext zabezpečení tobe používá při kontrole přístupových oprávnění v běžné době provádění, u později. Vyžaduje super privilegium nebo z MariaDB 10.5.2 nastavené uživatelské oprávnění.

v Případě, že rutina název je stejný jako název vestavěný SQLfunction, musíte použít mezeru mezi jméno a followingparenthesis při definování rutiny, nebo dojde k chybě syntaxe. To platí i při pozdějším vyvolání rutiny., Z tohoto důvodu předpokládáme, že je lepší vyhnout se opětovnému použití názvů existujících sqlfunctions pro vlastní uložené rutiny.

režim IGNORE_SPACE SQL se vztahuje na vestavěné funkce, nikoli na úložiště. Vždy je přípustné mít mezery za rutinním názvem, bez ohledu na to, zda je povoleno IGNORE_SPACE.

seznam parametrů uzavřený v závorkách musí být vždy přítomen.Pokud neexistují žádné parametry, měl by být použit prázdný seznam parametrů (). Názvy parametrů nejsou velká a malá písmena.,

každý parametr může být deklarován pro použití jakéhokoli platného datového typu, kromě toho, že atribut COLLATE nelze použít.

pro platné identifikátory, které lze použít jako názvy postupů, viz Názvy identifikátorů.

IN / OUT / INOUT

každý parametr je IN parametr ve výchozím nastavení. Určete jinak fórech parametru, použijte klíčové slovo OUT nebo INOUT před jméno parametru.

parametrIN předává hodnotu do postupu., Postup by mohlmodifikovat hodnotu, ale změna není pro volajícího viditelnákdyž se postup vrátí. Parametr OUT předává hodnotu z parametruprocedure zpět volajícímu. Jeho počáteční hodnota je NULL v rámcipostup a jeho hodnota je viditelná volajícímu, když se procedurereturns. ParametrINOUT je inicializován volajícím, může být zmodifikován postupem a jakákoli změna provedená postupem je volajícímu viditelná, když se postup vrátí.,

Pro každého OUT nebo INOUT parametr, projít uživatelsky definovaná proměnná vCALL prohlášení, že vyvolá postup, takže můžete získat itsvalue při řízení se vrátí. Pokud voláte na procedurefrom do jiné uložené procedury nebo funkce, můžete také projít aroutine parametr nebo lokální rutiny proměnné jako IN nebo INOUTparametr.

deterministický / ne deterministický

DETERMINISTIC a NOT DETERMINISTIC platí pouze pro funkce., Zadání DETERMINISTCnebo NON-DETERMINISTIC v procedurách nemá žádný účinek. Výchozí hodnota je NOT DETERMINISTIC. Funkce jsou DETERMINISTIC když vždy vrátí stejnou hodnotu pro stejný vstup. Například funkce zkrácení nebo podřetězu. Každá funkce zahrnující data je tedy vždy NOT DETERMINISTIC.,

OBSAHUJE SQL/NE SQL/ČTE SQL DATA/MODIFIES SQL DATA

CONTAINS SQL NO SQL READS SQL DATA MODIFIES SQL DATA jsou informativní ustanovení, která řekne serveru, co funkce dělá. MariaDB v žádném případě nekontroluje, zda je uvedená klauzule správná. Pokud není zadána žádná z těchto doložek, použije se ve výchozím nastavení CONTAINS SQL.

MODIFIES SQL DATA znamená, že funkce obsahuje příkazy, které mohou upravovat data uložená v databázích., K tomu dochází, pokud funkce obsahuje příkazy jako DELETE, UPDATE, INSERT, REPLACE nebo DDL.

READS SQL DATA znamená, že funkce čte data uložená v databázích, ale nemění Žádná data. K tomu dochází, pokud jsou použity příkazy SELECT, ale nejsou provedeny žádné operace zápisu.

CONTAINS SQL znamená, že funkce obsahuje alespoň jeden příkaz SQL, ale nečte ani nepíše Žádná data uložená v databázi. Příklady zahrnují SET nebo DO.,

NO SQL neznamená nic, protože MariaDB v současné době nepodporuje žádný jiný jazyk než SQL.

routine_body se skládá z platného příkazu SQL procedury. To můžebýt jednoduché prohlášení, jako je SELECT nebo INSERT, nebo to může být acompound prohlášení napsané pomocí začátku a konce. Složené prohlášenímohou obsahovat prohlášení, smyčky a další řídicí strukturuurestatements. Podrobnosti syntaxe naleznete v programových a složených prohlášeních.

MariaDB umožňuje rutiny obsahovat příkazy DDL, například CREATE andDROP., MariaDB také umožňuje uložené procedury (ale ne uložené funkce)obsahovat příkazy transakce SQL, jako je COMMIT.

Další informace o příkazech, které nejsou povoleny instored rutiny, viz uložená rutinní omezení.

Vyvolání uložená procedura z v rámci programů

Pro informace o vyvolání uložených procedur z v rámci programů napsaných v jazyce, který má MariaDB/MySQL rozhraní, viz VOLÁNÍ.

nebo nahradit

MariaDB počínaje 10.1.,3

volitelné OR REPLACE klauzule se používá, to se chová jako zkratku pro:

DROP PROCEDURE IF EXISTS name;CREATE PROCEDURE name ...;

s výjimkou toho, že všechny existující oprávnění pro postup nejsou klesl.

sql_mode

MariaDB ukládá sql_mode systémové proměnné jsou nastavení, které je v platnosti v době, kdy rutina je vytvořen, a vždy provede rutina se toto nastavení v platnosti, bez ohledu na server SQL režimu v účinku, když rutina je volána.

znakové množiny a koláže

parametry postupu lze deklarovat libovolnou znakovou sadou / kolizí., Pokud znaková sada a kollace nejsou specificky nastaveny, použije se výchozí nastavení databáze v době vytvoření. Pokud databáze výchozí nastavení změnit později, uložené procedury character set/řazení nebude změněn ve stejnou dobu; uložené procedury musí být zrušen a znovu vytvořen k zajištění stejné znakové sady/řazení jako databáze se používá.

Oracle Režimu

MariaDB počínaje 10.3

Z MariaDB 10.3, podmnožina Oracle PL/SQL jazyk byl podporován kromě tradičního SQL/PSM-založené MariaDB syntaxe., Podrobnosti o změnách při spuštění režimu Oracle naleznete v režimu Oracle z MariaDB 10.3.

příklady

následující příklad ukazuje jednoduchý uložený postup, který používá parametr OUT. Používá příkaz oddělovač pro nastavení nového oddělovače po dobu trvání procesu-viz oddělovače v klientovi mysql.,

Znakové sady a řazení:

VYTVOŘIT NEBO NAHRADIT:

Viz Také

  • Identifikátor Jména
  • Uložené Procedury Přehled
  • ZMĚNIT POSTUP
  • POSTUP
  • VYTVOŘIT POSTUP
  • ZOBRAZIT POSTUP STAV
  • Uložené Rutiny Oprávnění
  • Informace o Schématu RUTINY Tabulky

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *