Mysql tárolt eljárások (forráskód) - szoftverek
Hosszú idő alatt ezt a kérdést kínoztam. Az interneten az irodalom kicsi, különösen oroszul. Meg kellett kérdeznem külföldi fórumokon, mélyebbre kell menni a kézikönyvekbe, és tisztázni kell néhány érthetetlen pillanatot magamnak. Szóval röviden a tárolt eljárásokról a MySQL-ben.
Tárolt eljárások - mi ez?
A MySQL verziója óta tárolt eljárások jelentek meg. Ezek lehetővé teszik a komplex folyamatok automatizálását MySQL szinten, ahelyett, hogy külső scripteket használnának ehhez. Ez megadja nekünk a legnagyobb végrehajtási sebességet, mert Nem vezetünk nagy számú kérést, csak akkor, ha ezt vagy ezt az eljárást (vagy függvényt) hívjuk.
Mi szükséges ehhez? Telepítse a MySQL szerver 5-ös vagy újabb verzióját (dev.mysql.com/downloads). Eljárásokat lehet létrehozni lekérdezésekként, például a MySQL parancssor segítségével, de a kényelem érdekében azt javaslom, hogy töltsd le a MySQL GUI Tools (dev.mysql.com/downloads/gui-tools) fájljait. Ez a csomag három programot tartalmaz: MySQL Administrator, MySQL Query Browser és MySQL Migration Toolkit. Szükségünk van az első kettőre. (Habár egy MySQL lekérdező böngészőt kezelhet, de a tárolt eljárásokban ez a $$ néha zavaró lehet).
Az első tárolt eljárás
Nyissa meg a MySQL adminisztrátort, kapcsolódjon a MySQL kiszolgálóhoz, és hozzon létre egy új sémát (adatbázis): kattintson a Katalógusok elemre, válassza az Új séma létrehozása parancsot a Schemata területen (Ctrl + N). Nevezd meg valahogy (például db). Nyissa meg az újonnan létrehozott grafikont, válassza a Tárolt eljárások fület, és kattintson a Tárolt feldolgozás létrehozása gombra. Nevezze el az eljárást1. Az eljárás testében (a BEGIN és az END között) írja be a következőket:
Kattintson az SQL végrehajtása gombra - az eljárás létrejön. Nyissa meg a MySQL Query Browser alkalmazást, válassza ki a sémát (db), és adja meg a következő lekérdezést:
Változók a MySQL-ben
Annak érdekében, hogy a MySQL-ben tárolt eljárásokból származó előnyöket kivegyenek, változókkal kell dolgoznia. Mivel ez nem tartozik e cikk hatálya alá, csak néhány példát mutatok be.
Egyszerű változók
Az egyszerű és a rendszer változók közötti különbség az, hogy a rendszer változók elérhetőek a tárolt eljáráson kívül. Ez azt jelenti, hogy néhány olyan adatot kell kitermelni, amelyre szükséged van a rendszer használatához, és a csak az eljáráson belül szükséges változóknak egyszerűnek kell lenniük.
Paraméterek tárolt eljárásokban
Itt is minden nagyon egyszerű. Megváltoztatjuk az első sorot, amely kijelenti az eljárást:
Itt az IN kulcsszó azt jelzi, hogy a paraméter bejövő. Ezután ezzel a paraméterrel dolgozunk a szokásos változóval az eljáráson belül:
Feltételek, ciklusok. HA MÁSODIK, MIVEL
Feltételek és ciklusok, amelyekre feltétlenül szükséged lesz összetett tárolt eljárások írásakor, de nem foglalkozom ezzel a témával. Azt hiszem, legalább van néhány programozási képességed, ezért csak a szintaxist mutatom be.
Egyszerű példa
A tárolt eljárások egyik jó felhasználása, ha egyszerre több kérelmet kell összeillesztenünk, például egy fórum hozzáadásával és a témák számának növelésével. Tételezzük fel a szálak táblázatát
Itt a cím lesz egy új téma címe. Hát és az asztal, például egy webhely különböző statisztikai változóival, beleértve az általános formájú témák mennyiségét is.
Itt úgy tűnik, minden világos, feltételezzük, hogy van egy bejegyzésünk a név = szálak és értéke = 0. Új tárolt eljárás2 létrehozása.
Igazából semmit nem lehet megmagyarázni, csak két kérelmet egyesítenek. Most ezt az eljárást hívhatjuk így:
Így két vagy több kérés (pl. PHP-n keresztül) átadása helyett egy optimalizálást, tiszta kódot tudunk átadni, és bármikor megváltoztathatjuk, anélkül, hogy más szkripteket érintene.
Kurzorok (MySQL kurzorok)
A kurzorok lehetővé teszik, hogy a lekérdezés összes eredményét átlépje. Nehéz elmagyarázni, a gyakorlatban megmutatom. Adj még egy táblát adatbázisunkba - találatok:
Itt leírjuk az összes téma címkéit. A tárolt eljárás hasonlóképpen fog kinézni:
Részletesen. Az eljárás minden témán keresztül megy keresztül, minden tag megszakítja a címkés táblázatot, és ha ez a címke hiányzik, hozzáadja.
Nyissa meg a kurzort és kapja meg az első rekordot. Következő a hurokban - Válassza ki az aktuális címke tagtábláján szereplő találatok számát, és tegye az eredményt az iCount változóba. Ha nincs eredmény, akkor tegyen be új címkét az INSERT segítségével.
Végül zárja be a kurzort és lépjen ki az eljárásból. Nos, ez minden.
Adatgyűjtés
Emlékezzünk a rendszerváltozókra, és fontoljuk meg a tábláink másik manipulációját - szerezzük be a címkék és témák teljes számát. Folytassuk közvetlenül az eljárást: