szintaxis

leírás

tárolt eljárást hoz létre. Alapértelmezés szerint egy rutin vanaz alapértelmezett adatbázishoz kapcsolódik. A routine hozzárendeléseegy adott adatbázishoz implicit módon adja meg a nevet db_name-ként.sp_namewhen létrehozásakor.

a rutin meghívásakor implicit USE db_name (andundone, amikor a rutin megszűnik) kerül végrehajtásra. Az okok a rutin, hogyaz adott alapértelmezett adatbázis végrehajtása közben. A parancsok használata aa beépített rutinok nem engedélyezettek.,

tárolt eljárás létrehozásakor a CALL utasítás használatával hívja fel (lásd a hívást).

a CREATE PROCEDURE utasítás végrehajtásához a CREATE ROUTINE jogosultság szükséges. Alapértelmezés szerint a Mariadbautomatikusan megadja a ALTER ROUTINE és EXECUTE jogosultságokat a theroutine creator számára. Lásd még: tárolt rutin jogosultságok.,

a DEFINER és az SQL biztonsági záradékok meghatározzák a hozzáférési jogosultságok rutin végrehajtási időben történő ellenőrzésekor használt biztonsági kontextust, amelyet később leírtak. Szükség van a SUPER privilege, vagy, MariaDB 10.5.2, a beállított felhasználói jogosultság.

Ha a rutinnév megegyezik a beépített SQLfunction nevével, akkor a rutin meghatározásakor a név és a következő szóközt kell használnia, vagy szintaktikai hiba lép fel. Ez akkor is igaz, ha később meghívja a rutinot., Ezért miazt sugallják, hogy jobb, ha elkerüljük a meglévő SQLfunctions nevének újbóli használatát a saját tárolt rutinokhoz.

az IGNORE_SPACE SQL mód a beépített funkciókra vonatkozik, nem pedig a storedroutinokra. Mindig megengedhető, hogy egy rutin név után legyen szóköz, függetlenül attól, hogy az IGNORE_SPACE engedélyezve van-e.

a zárójelben szereplő paraméterlistának mindig jelen kell lennie.Ha nincsenek paraméterek, akkor a () üres paraméterlistáját kell használnihasználni. A paraméternevek nem ESET érzékenyek.,

minden paraméter lehet nyilvánítani, hogy bármilyen érvényes adattípus, kivéve, hogya COLLATE attribútum nem használható.

az érvényes azonosítók eljárásnevekként való használatához lásd: Azonosító nevek.

IN/OUT/INOUT

minden paraméter alapértelmezés szerint egyIN paraméter. Más fora paraméter megadásához használja a OUT vagy INOUT kulcsszót a paraméter neve előtt.

An IN paraméter átad egy értéket egy eljárásba., Az eljárás lehetmódosítsa az értéket, de a módosítás nem látható a hívó számáraamikor az eljárás visszatér. Egy OUT paraméter egy értéket ad át a hívónak. A kezdeti értéke NULL aeljárásban, értéke pedig a hívó számára látható, amikor az eljáráselőfordul. EgyINOUT paramétert inicializál a hívó, lehet módosítható az eljárás, és minden változás az eljárás által isvisible a hívó, Ha az eljárás visszatér.,

minden OUTvagy INOUTparaméter, adja át a felhasználó által definiált változót aCALL utasítás, amely meghívja az eljárást, hogy megkaphassa annak értékét, amikor az eljárás visszatér. Ha az eljárást egy másik tárolt eljárásból vagy funkcióból hívja, akkor az aroutine paramétert vagy a helyi rutinváltozót IN vagy INOUTparaméterként is átadhatja.

determinisztikus / nem determinisztikus

DETERMINISTICés NOT DETERMINISTIC csak funkciókra alkalmazható., A DETERMINISTC vagy NON-DETERMINISTIC eljárásokban történő meghatározásának nincs hatása. Az alapértelmezett érték NOT DETERMINISTIC. A funkciók DETERMINISTIC, amikor mindig ugyanazt az értéket adják vissza ugyanazon bemenethez. Például csonka vagy szubsztráló funkció. Az adatokat érintő bármely funkció tehát mindig NOT DETERMINISTIC.,

SQL/NO SQL/READS SQL DATA/MODIFIES SQL DATA

CONTAINS SQL, NO SQL, READS SQL DATA és MODIFIES SQL DATA tájékoztató záradékok ez megmondja a szervernek, hogy mit csinál a funkció. A MariaDB semmilyen módon nem ellenőrzi, hogy a megadott záradék helyes-e. Ha ezen kikötések egyike sincs megadva, a CONTAINS SQL alapértelmezés szerint használatos.

MODIFIES SQL DATA azt jelenti, hogy a funkció olyan állításokat tartalmaz, amelyek módosíthatják az adatbázisokban tárolt adatokat., Ez akkor történik, ha a funkció olyan kijelentéseket tartalmaz, mint a Törlés, frissítés, beszúrás, csere vagy DDL.

READS SQL DATA azt jelenti, hogy a függvény adatbázisokban tárolt adatokat olvas, de semmilyen adatot nem módosít. Ez akkor történik, ha a Select kimutatásokat használják, de nincs írási művelet végrehajtva.

CONTAINS SQL azt jelenti, hogy a funkció legalább egy SQL utasítást tartalmaz, de nem olvas vagy ír semmilyen adatbázisban tárolt adatot. A példák közé tartozik a SET vagy a DO.,

NO SQL nem jelent semmit, mert a MariaDB jelenleg nem támogat más nyelvet, mint az SQL.

a routine_body egy érvényes SQL procedure utasításból áll. Ez lehet egy egyszerű kijelentés, mint a SELECT vagy INSERT, vagy lehet acompound nyilatkozatot írt BEGIN and END. Az összetett kijelentések tartalmazhatnak nyilatkozatokat, hurkokat és egyéb vezérlőszerkezeteket. A szintaxis részleteit lásd: Programmatic and Compound Statements.

MariaDB lehetővé teszi, hogy a rutinok tartalmazzanak DDL kijelentéseket, mint például a CREATE andDROP., A MariaDB lehetővé teszi, hogy a tárolt eljárások (de nem tárolt funkciók)SQL tranzakciós nyilatkozatokat tartalmazzanak, mint például a COMMIT.

további információkat a kijelentéseket, amelyek nem engedélyezettek instored rutinok, lásd tárolt rutin korlátozások.

Hivatkozva tárolt eljárás belül programok

további információ hivatkozva tárolt eljárások belül programok olyan nyelven írták, hogy van egy MariaDB/MySQL felület, lásd: HÍVÁS.

vagy cserélje ki a

MariaDB-t 10, 1-től kezdve.,3

Ha az opcionális OR REPLACE záradékot használják, akkor a következő parancsikonként működik:

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

azzal a kivétellel, hogy az eljárás bármely meglévő jogosultsága nem csökken.

sql_mode

MariaDB tárolja az sql_mode rendszerváltozó beállítást, amely a rutin létrehozásakor érvényes, és mindig végrehajtja a rutint ezzel a beállítással, függetlenül a kiszolgáló SQL módjától, amikor a rutin meghívásra kerül.

karakterkészletek és Collations

az eljárás paraméterei bármely karakterkészlettel/kollációval deklarálhatók., Ha a karakterkészlet és az összesítés nincs külön beállítva, akkor az adatbázis alapértékei a létrehozáskor lesznek használva. Ha az adatbázis alapértelmezett változás egy későbbi szakaszban, a tárolt eljárás karakterkészlet/leválogatással nem változik egyszerre; a tárolt eljárást kell csökkent, majd újra annak érdekében, ugyanaz karakterkészlet/leválogatással, mint az adatbázist használják.

Oracle Mode

MariaDB kezdve 10.3

MariaDB 10.3, egy részhalmaza Oracle PL / SQL nyelv már támogatott mellett a hagyományos SQL / PSM-alapú MariaDB szintaxis., Lásd Oracle mód MariaDB 10.3 a részleteket változások futtatásakor Oracle módban.

példák

a következő példa egy egyszerű tárolt eljárást mutat be, amely egy OUTparamétert használ. A DELIMITER paranccsal új határolót állít be a folyamat időtartamára-lásd a határolókat a mysql kliensben.,

karakterkészletet, majd leválogatással:

LÉTRE, VAGY CSERÉLJE ki:

Lásd

  • Azonosító, Név
  • Tárolt Eljárás Áttekintése
  • ALTER ELJÁRÁS
  • CSEPP ELJÁRÁS
  • SHOW LÉTRE ELJÁRÁS
  • SHOW ELJÁRÁS ÁLLAPOTA
  • Tárolt Rutin Jogosultságok
  • Információ Séma RUTINOK Táblázat

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük