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 INOUTparametri.

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ää OUTparametri. 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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *