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 -

  1. Csatlakozás típusai az SQL-ben
  2. SQL Alter Command
  3. SQL nézetek
  4. SQL felügyeleti eszközök
  5. Kurzorok típusai a PL / SQL-ben
  6. A MySQL 6 legfontosabb csatlakozási típusa példákkal