syntaksi
kuvaus
luo tallennetun menettelyn. Oletuksena rutiini liitetään oletustietokantaan. Jos haluat liittää routineexplicitly tietynlaiseen tietokantaan, Määritä nimi db_name._nimeä, kun luot sen.
kun rutiiniin vedotaan, suoritetaan implisiittinen käyttö db_name (andundone kun rutiini päättyy). Aiheuttaa rutiini on antanut oletuksena tietokanta, kun se suorittaa. Käytä lausuntoja, joissa on asennetut rutiinit ovat kiellettyjä.,
Kun tallennettu menettely on luotu, voit vedota sen tekstiili – CALL
lausunto (ks. KUTSU).
suorittaa CREATE PROCEDURE
lausunto, se tarpeelliseksi saada CREATE ROUTINE
etuoikeus. Oletuksena, MariaDBautomatically avustukset ALTER ROUTINE
ja EXECUTE
oikeudet theroutine luoja. Katso myös tallennetut Rutiinioikeudet.,
DEFINER
ja SQL TURVALLISUUS lausekkeita, määrittää turvallisuutta yhteydessä on syytä käyttää, kun tarkistaa käyttöoikeudet rutiini suoritusaika, asdescribed myöhemmin. Vaatii Super etuoikeus, tai, alkaen MariaDB 10.5.2, asettaa käyttäjä etuoikeus.
Jos rutiini on sama nimi kuin nimi sisäänrakennettu SQLfunction, sinun täytyy käyttää tilaa välillä nimi ja followingparenthesis määriteltäessä rutiini, tai syntaksi virhe ilmenee. Tämä pitää paikkansa myös silloin, kun vedot rutiiniin myöhemmin., Tästä syystä, wesuggest, että se on parempi välttää käyttää uudelleen nimet nykyisten SQLfunctions oman tallennetut rutiinit.
IGNORE_SPACE SQL-moodi koskee sisäänrakennettuja toimintoja, ei storedroutiineja. On aina sallittua pitää välilyöntejä rutiininimen jälkeen riippumatta siitä, onko IGNORE_SPACE käytössä.
sulkeissa olevan parametriluettelon on aina oltava läsnä.Jos parametreja ei ole, käytetään tyhjää parametriluetteloa (). Parametrin nimet eivät ole tapausherkkiä.,
kunkin parametrin voidaan ilmoittaa käyttävän mitä tahansa kelvollista tietotyyppiä, paitsi että COLLATE-attribuuttia ei voida käyttää.
Jos tunnisteita käytetään menettelyniminä, Katso Tunnistenimet.
IN/OUT/INOUT
Jokainen parametri on IN
parametrin oletusarvon. Määrittää, muuten foorumeilla parametrin, käytä avainsanaa OUT
tai INOUT
ennen parametrin nimi.
IN
parametri siirtää arvon menettelyyn., Menettely mightmodify arvo, mutta muutos ei näy callerwhen menettely palaa. An OUT
parametri kulkee arvo menettelystä takaisin soittajalle. Sen alkuperäinen arvo on mitätön prosessin sisällä, ja sen arvo näkyy soittajalle, kun menettelyneturneissa. An INOUT
parametri on alustettu soittajan, voi bemodified menettelyllä, ja jokainen muutos tehdään menettelyn isvisible soittajalle, kun menettely palaa.,
kunkin OUT
tai INOUT
parametri, siirtää käyttäjän määrittämä-muuttujanCALL
ilmoitus, joka vetoaa menettelyn niin, että voit saada arvo liki, kun menettely palaa. Jos olet soittamalla procedurefrom sisällä toinen tallennettu menettely tai toiminta, voit myös siirtää aroutine parametri tai paikallinen rutiini muuttuja kuten IN
tai INOUT
parametri.
DETERMINISTINEN/EI DETERMINISTINEN
DETERMINISTIC
ja NOT DETERMINISTIC
sovelletaan ainoastaan toimintoja., Täsmennetään DETERMINISTC
tai NON-DETERMINISTIC
menettelyjä ei ole vaikutusta. Oletusarvo on NOT DETERMINISTIC
. Funktiot ovat DETERMINISTIC
, kun ne palauttavat aina saman arvon samalle syötölle. Esimerkiksi typistys-tai substraattifunktio. Mikä tahansa funktio, johon liittyy tietoja, on siis aina NOT DETERMINISTIC
.,
SISÄLTÄÄ SQL/EI SQL/LUKEE SQL DATA/MUOKKAA SQL-TIETOJA
CONTAINS SQL
, NO SQL
, READS SQL DATA
ja MODIFIES SQL DATA
ovat informatiivisia lausekkeita kertoa palvelimelle, mitä toiminto tekee. MariaDB ei tarkista millään tavalla, onko mainittu lauseke oikea. Jos mitään näistä lausekkeista ei ole määritelty, CONTAINS SQL
käytetään oletuksena.
MODIFIES SQL DATA
tarkoittaa, että toiminto sisältää lausuntoja, jotka voivat muuttaa tietoja tallennetaan tietokantoihin., Tämä tapahtuu, jos funktio sisältää lausekkeita, kuten DELETE, UPDATE, INSERT, REPLACE tai DDL.
READS SQL DATA
tarkoittaa, että toiminto lukee tiedot tallennetaan tietokantoihin, mutta ei muokata tietoja. Tämä tapahtuu, jos käytetään valikoituja lausumia, mutta kirjoitusoperaatioita ei suoriteta.
CONTAINS SQL
tarkoittaa, että toiminto sisältää vähintään yksi SQL-lause, mutta se ei lukea tai kirjoittaa kaikki tiedot tallennetaan tietokantaan. Esimerkkejä ovat SET tai DO.,
NO SQL
merkitse mitään, koska MariaDB ei tällä hetkellä tue millään muulla kielellä kuin SQL.
routine_body koostuu kelvollisesta SQL-menettelylausumasta. Tämä voi olla yksinkertainen lausuma, kuten Valitse tai Lisää, tai se voi olla acompound lausuma kirjoitetaan BEGIN ja END. Yhdiste statementscan sisältää ilmoituksia, silmukoita,ja muut ohjausrakenteet. Katso ohjelmalliset ja yhdistetyt lausekkeet syntaksin yksityiskohdista.
MariaDB avulla rutiinit sisältävät DDL lausuntoja, kuten CREATE
andDROP., MariaDB sallii myös tallennettujen menettelyjen (mutta ei tallennettujen toimintojen)sisältävän SQL-tapahtumalausekkeita, kuten COMMIT
.
lisätietoja lausumista, joita ei sallita asennetuissa rutiineissa, Katso tallennetut Rutiinirajoitukset.
Vetoamalla tallennettu menettely sisällä ohjelmat
lisätietoja vetoamalla tallennettu menettelyt sisällä ohjelmia kirjoitettu kielellä, joka on MariaDB/MySQL käyttöliittymä, katso KUTSU.
tai korvaa
MariaDB alkaen 10.1.,3
Jos valinnainen OR REPLACE
lauseketta käytetään, se toimii kuin oikotie:
DROP PROCEDURE IF EXISTS name;CREATE PROCEDURE name ...;
lukuun ottamatta sitä, että voimassa olevat oikeudet menettely ei pudonnut.
sql_mode
MariaDB tallentaa sql_mode järjestelmän muuttuja-asetus, joka on voimassa silloin, kun rutiini on luotu, ja aina suorittaa rutiini kun tämä asetus on voimassa, riippumatta siitä, palvelin, SQL-tilassa voimaan, kun rutiini ei vedota.
merkistöt ja Vertailu
– Menettely parametrit voidaan katsoa tahansa merkki set/lajittelu., Jos merkistö ja lajittelu ei ole erikseen asetettu, tietokannan oletusarvoja aikaan luomisen käytetään. Jos tietokannan oletusarvoja muuttaa myöhemmässä vaiheessa, tallennetut menettely merkistö/lajittelu ei ole muuttunut samaan aikaan; tallennetut menettely on pudonnut ja uudelleen varmistaa sama merkistö/lajittelu kun tietokantaa käytetään.
Oracle-Tila
MariaDB alkaen 10.3
MariaDB 10.3, osajoukko Oraclen PL/SQL-kieli on tuettu lisäksi perinteisen SQL/PSM-pohjainen MariaDB-syntaksia., Lisätietoja muutoksista Oracle-tilan käytössä on MariaDB 10.3: n Oracle-tilassa.
Esimerkkejä
seuraava esimerkki näyttää, yksinkertainen tallennettu menettely, joka käyttää OUT
parametri. Se käyttää EROTIN komento asettaa uusi erotin ajaksi prosessi — nähdä Erottimia mysql client.,
– merkistö ja lajittelu:
LUO TAI VAIHDA:
Katso Myös
- Tunniste Nimet
- Tallennettu Menettely Yhteenveto
- MUUTTAA MENETTELYÄ
- PUDOTA MENETTELYLLÄ
- NÄYTÄ LUODA MENETTELY
- NÄYTÄ MENETTELY TILA
- Säilyttää Rutiini Oikeudet
- Tiedot Skeema RUTIINIT Taulukko