Bevezetés a kurzorokhoz az SQL-ben
A kurzorok ideiglenes munkaterületek, amelyeket a memóriában hoztak létre, hogy néhány SQL parancsot feldolgozzanak egy csomó adaton. Túl bonyolult meghatározás? Megértjük. Gondoljon a kurzorokra, mint az SQL minden hurkára. Ha egy kurzort szeretne végrehajtani egy feladatot egy adatsorra, akkor használja a kurzort. Tegyük fel, hogy van egy alkalmazotta táblája, amely tartalmazza a szervezet minden alkalmazottjának fizetését. Az egyes alkalmazottak fizetését bizonyos százalékkal meg akarja növelni. Itt használhatja a kurzort. A „Hogyan” című cikk késõbb bemutatásra került.
Tehát a kurzorok ideiglenes munkaterületet hoznak létre a kiválasztott sorkészlettel és egy mutatóval, amely az aktuális sorra mutat. Ezt a sorkészletet, amelyen a kurzor elvégzi a kívánt műveletet, aktív adatkészletnek nevezzük. A mutató egyenként vonja le a sorokat az eredménykészletből. Ezután bármilyen SQL műveletet egyszerre végezhet.
Implicit kurzorok
Az implicit kurzorokat, amint a neve azt sugallja, az SQL elemző generálja a DML lekérdezésekhez. A DML lekérdezések adatmanipulációs lekérdezések. Ezek a lekérdezések manipulálják vagy megváltoztatják az adatokat. Nem zavarják az adatbázis felépítését vagy sémáját. Az olyan lekérdezések, mint a SELECT, INSERT, UPDATE és DELETE implicit kurzort generálnak. A hallgatólagos kurzorok el vannak rejtve a végfelhasználó számára.
Kifejezett kurzorok
Az explicit kurzorok a felhasználó által generált kurzorok. Amikor a felhasználó utasítja az SQL elemzőt, hogy hozzon létre kurzort egy aktív halmazhoz, akkor az így létrehozott kurzort explicit kurzornak nevezik. Az aktív halmazt a felhasználó SELECT lekérdezésével határozhatja meg. Ebben a cikkben az explicit kurzorokkal foglalkozunk részletesen.
Kurzorműveletek - A kurzor életciklusa
A kurzor életciklusa általában öt szakaszból áll:
1. Nyilatkozat: Az első lépés a kurzor deklarálása. Ez a lépés arra utasítja a rendszert, hogy kurzort hozzon létre az adott adatkészlettel. Az adatkészletet SQL utasítás felhasználásával kell felépíteni. Ebben a szakaszban az aktív készlet létrejön, de a kurzor ideiglenes munkaterületét még nem nyitották meg a memóriában.
2. Megnyitás: Ezután a rendszer utasítja a kurzort. Ebben a szakaszban az ideiglenes munkaterület betöltésre kerül a memóriába az aktív készlettel, és létrejön egy mutató, amely az aktív készlet első sorára mutat.
3. Fetch: Ez a teljes folyamat megismétlődő lépése. Az aktuális sor, amelyet a mutató mutat, lehívásra kerül, és a sor adatain végrehajtja a kívánt feladatot. A mutató a kurzor következő sorára lép.
4. Bezárás: Az adatkezelés befejezése után a kurzort be kell zárni.
5. Deallocate: Ez az utolsó lépés a kurzor törléséhez és a kurzorhoz hozzárendelt memória, processzor és egyéb rendszer erőforrások felszabadításához.
Kifejezett kurzorok - akcióban!
Oké, tehát alapvető ismereteink vannak a kurzorok működéséről és működéséről. Itt az ideje, hogy piszkosítsa kezünket, és hozzon létre egy saját kurzort.
Az kurzorok terminológiája az SQL-ben
Megértjük a szintaxisban használt terminológiákat.
Kurzor hatóköre
- A kurzor hatóköre lehet GLOBAL vagy LOCAL . A kapcsolaton keresztül globális kurzor érhető el. A helyi kurzor hatóköre csak a tárolt eljárásokra, funkciókra vagy a kurzort tároló lekérdezésre korlátozódik.
- Ez az MS SQL Server-specifikus szolgáltatás. A MySQL csak a helyi hatályú kurzorokat támogatja.
Kurzor mozgatása
- Az MS SQL Server a kurzor mozgásának beállítását is lehetővé teszi. Lehet, hogy a hagyományos Forward_Only mód is, amely az egérmutatót az első sorról az utolsó sorra mozgatja. Vagy görgethető az első, az utolsó, az előző vagy a következő sorra.
- A MySQL kurzorok nem görgethetők.
Kurzor típusa
- A kurzor statikus lehet, mivel az gyorsítótárazhatja az aktív készletet az üzlethelyzetig, és előre-hátraugrálhat ezen a gyorsítótárazott aktív halmazon keresztül. A kurzor csak statikus módban haladhat előre.
- Dinamikus is lehet, ha sorokat ad hozzá vagy töröl az aktív halmazban, amíg a kurzor nyitva van. Ezek a változások nem láthatók a kurzor többi felhasználójának billentyűkészlet üzemmódban. A MySQL kurzorai csak a gyors_forgalom alatt állnak.
Kurzorzár
- A kurzorzárak hasznosak több felhasználós környezetben. Rögzítik a sort, hogy egyetlen felhasználó sem működjön ugyanazon az adaton egyszerre. Ez biztosítja az adatok integritását.
- A csak olvasható zár azt állítja, hogy a sort nem lehet frissíteni.
- A görgetőgombok zárolják a sort, amikor letölti őket a kurzorban, biztosítva ezzel, hogy a feladat sikeres legyen, és a frissített adatok a kurzoron kívül is rendelkezésre álljanak. Optimista megpróbálja frissíteni a sort zár nélkül. Így ha a sort a kurzoron kívül frissítették, akkor a feladat nem lesz sikeres.
- A MySQL csak írásvédett zárakat támogat. Ez azt jelenti, hogy a MySQL nem frissíti a tényleges táblát, hanem az adatokat másolja a frissítési parancsok végrehajtásához.
Így látjuk, hogy ezek a lehetőségek csak az MS SQL Server alkalmazásban érhetők el. Ez még egyszerűbbé teszi a MySQL kurzorok szintaxisát.
Példa
Most frissítsük az alkalmazottak fizetését a Munkavállalói táblázatban.
Az alábbi adatokat használjuk ezekben a kurzorokban az SQL példában.
A kurzor kódja a következő lenne:
DECLARE @sal float
DECLARE @newsal float
DECLARE Emp_Cur CURSOR FOR SELECT Salary, Updated_Salary FROM Employees
OPEN Emp_Cur
FETCH NEXT FROM Emp_Cur INTO @sal, @newsal
WHILE @@FETCH_STATUS = 0
BEGIN
SET @newsal = @sal*1.25
UPDATE Employees SET Updated_Salary = @newsal WHERE CURRENT OF Emp_Cur
FETCH NEXT FROM Emp_Cur INTO @sal, @newsal
END
CLOSE Emp_Cur
DEALLOCATE Emp_Cur
És a kimenet a fenti kurzorparancs végrehajtása után a következő lenne:
Következtetés - Kurzorok az SQL-ben
Így láttuk, hogy mi a kurzor, hogyan kell használni és hol lehet elkerülni. A kurzorok hasznos segédprogramnak bizonyulnak a fejlesztők számára, de a teljesítmény költségén. Tehát legyen óvatos, ha kurzorokat választ.
Ajánlott cikkek
Ez az SQL kurzorok útmutatója. Itt a példákkal tárgyaljuk az SQL kurzor típusát, életciklusát és terminológiáját. Megnézheti más javasolt cikkeinket -
- Csatlakozás típusai az SQL-ben
- SQL Alter Command
- SQL nézetek
- SQL felügyeleti eszközök
- Kurzorok típusai a PL / SQL-ben
- A MySQL 6 legfontosabb csatlakozási típusa példákkal