Articles

Oracle PL / SQL kurzor: Implicit, Explicit, Cursor for Loop [példa]

mi a kurzor a PL / SQL-ben?

a kurzor mutató erre a kontextusterületre. Az Oracle kontextusterületet hoz létre egy SQL utasítás feldolgozásához, amely tartalmazza a Nyilatkozattal kapcsolatos összes információt.

PL / SQL lehetővé teszi a programozó számára, hogy a kurzor segítségével vezérelje a kontextus területét. A kurzor tartja az SQL utasítás által visszaküldött sorokat. A sorokat a kurzor tartja a továbbiakban aktív készlet., Ezeket a kurzorokat úgy is meg lehet nevezni, hogy a kód másik helyéről is hivatkozhassanak.

ebben a bemutatóban megtudhatja –

  • Implicit kurzor
  • Explicit kurzor
  • kurzor attribútumok
  • hurok kurzor utasítás

a kurzor két típusból áll.

  • Implicit kurzor
  • Explicit kurzor

Implicit kurzor

amikor bármilyen DML művelet történik az adatbázisban, implicit kurzor jön létre, amely az érintett sorokat tartja, az adott műveletben., Ezeket a kurzorokat nem lehet megnevezni, ezért nem lehet ellenőrizni vagy hivatkozni a kód más helyéről. Csak a kurzor attribútumain keresztül hivatkozhatunk a legfrissebb kurzorra.

Explicit kurzor

a programozók létrehozhatnak megnevezett kontextusterületet a DML műveletek végrehajtásához, hogy nagyobb ellenőrzést szerezzenek rajta. Az explicit kurzort a PL/SQL blokk deklarációs részében kell definiálni, majd a kódban használandó “SELECT” utasításhoz kell létrehozni.

Az alábbiakban olyan lépések találhatók, amelyek részt vesznek az explicit kurzorokkal való együttműködésben.,

  • A kurzor deklarálása

    A kurzor deklarálása egyszerűen azt jelenti, hogy létrehozunk egy megnevezett kontextusterületet a Deklarációs részben definiált “SELECT” utasításhoz. Ennek a kontextusterületnek a neve megegyezik a kurzor nevével.

  • nyitó kurzor

    A kurzor megnyitása utasítja a PL/SQL-t, hogy osztja ki a kurzor memóriáját. Ez teszi a kurzort készen áll a rekordok letöltésére.

  • az Adatok lekérése a Kurzorról

    ebben a folyamatban a “SELECT” utasítás végrehajtásra kerül, a beolvasott sorok pedig a kiosztott memóriában tárolódnak., Ezeket most aktív készleteknek nevezik. Az Adatok lekérése a kurzorról rekordszintű tevékenység, ami azt jelenti, hogy rekordról rekordra tudjuk elérni az adatokat.

    minden lekérési utasítás lekér egy aktív készletet, és megtartja az adott rekord adatait. Ez a kijelentés ugyanaz ,mint a “SELECT” utasítás, amely lekéri a rekordot, és hozzárendeli a változóhoz az “INTO” záradékban, de nem fog kivételt tenni.

  • A kurzor Bezárása

    miután az összes rekord letöltésre került, be kell zárnunk a kurzort, hogy az ehhez a kontextusterülethez rendelt memória felszabaduljon.,

szintaxis:

  • a fenti szintaxisban a Deklarációs rész tartalmazza a kurzor és a kurzor változó deklarációját, amelybe a lekérett adatokat hozzárendelik.
  • a kurzor a kurzor deklarációban megadott ‘SELECT’ utasításhoz jön létre.
  • az execution részben a deklarált kurzort megnyitjuk, lekérjük és bezárjuk.

kurzor attribútumok

mind az Implicit kurzor, mind az explicit kurzor rendelkezik bizonyos attribútumokkal, amelyek elérhetők. Ezek az attribútumok több információt adnak a kurzor műveletekről., Az alábbiakban a különböző kurzor attribútumok, valamint azok használatát.

kurzor attribútum leírás
%talált visszaadja a logikai eredményt “TRUE” ha a legutóbbi lekérési művelet sikeresen lekérte a rekordot, különben hamis lesz.
%NOTFOUND ez úgy működik, ellentétesen %talált vissza fog térni “TRUE”, ha a legutóbbi lekérési művelet nem tudott letölteni semmilyen rekordot.,
%ISOPEN ez visszaadja logikai eredmény “TRUE” ha az adott kurzor már megnyitott, máshol visszatér “FALSE”
%ROWCOUNT visszaadja a numerikus értéket. Ez adja a tényleges száma rekordok, hogy van hatással a DML tevékenység.

1.példa: ebben a példában látni fogjuk, hogyan kell kijelenteni, megnyitni, letölteni és bezárni az explicit kurzort.

az EMP táblából az összes alkalmazott nevét kurzorral vetítjük ki., A kurzor attribútumot is használjuk a hurok beállításához az összes rekord letöltéséhez a kurzorból.

kimenet

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY Total rows fetched is 3

Kód magyarázat:

  • 2.kódsor: a kurzor Guru99_det deklarálása “SELECT emp_name FROM emp’.
  • 3. kódsor: változó Lv_emp_name deklarálása.
  • 5. kódsor: a kurzor megnyitása guru99_det.
  • 6. kódsor: az alaphurok utasítás beállítása az ’emp’ táblázat összes rekordjának lekéréséhez.,
  • 7-es kódsor: a guru99_det adatok lekérése és az érték hozzárendelése az lv_emp_name-hez.
  • 9. kódsor: a “%NOTFOUND ” kurzor attribútum használatával megállapíthatja, hogy a kurzor összes rekordja lekérésre került-e. Ha lekérik, akkor visszaadja a “TRUE” – t, a vezérlés pedig kilép a hurokból, különben a vezérlő folyamatosan lekéri az adatokat a kurzorról, majd kinyomtatja az adatokat.
  • kódsor 11: a hurok utasítás kilépési feltétele.
  • kódsor 12: nyomtassa ki a lekérett alkalmazott nevét.,
  • kódsor 14: a kurzor attribútum “%ROWCOUNT ” segítségével megtalálhatja a kurzorban érintett/lekérett összes rekord számát.
  • kódsor 15: a hurokból való kilépést követően a kurzor bezáródik, és a kiosztott memória szabaddá válik.

hurok kurzor utasítás

“a hurok” utasítás használható dolgozó kurzorok. Megadhatjuk a kurzor nevét a tartománykorlátozás helyett a For loop utasításban úgy, hogy a hurok a kurzor első rekordjától a kurzor utolsó rekordjáig működjön., A kurzor változó, a kurzor megnyitása, a kurzor lekérése és bezárása implicit módon történik a FOR hurokkal.

szintaxis:

DECLARECURSOR <cursor_name> IS <SELECT statement>;BEGIN FOR I IN <cursor_name> LOOP . . END LOOP;END;
  • a fenti szintaxisban a Deklarációs rész tartalmazza a kurzor deklarációját.
  • a kurzor a kurzor deklarációban megadott ‘SELECT’ utasításhoz jön létre.
  • a végrehajtás részben a kijelölt kurzor a FOR hurokban van beállítva, ebben az esetben az ” I ” ciklusváltozó kurzorváltozóként fog viselkedni.,

1. példa: ebben a példában az EMP táblából az összes alkalmazott nevét kurzor-hurok segítségével vetítjük ki.

kimenet

Employee Fetched:BBB Employee Fetched:XXXEmployee Fetched:YYY

Kód magyarázat:

  • kódsor 2: A kurzor Guru99_det deklarálása az “EMP-ből válassza ki az emp_name-t” kijelentéshez.
  • kódsor 4: A kurzor ” FOR ” hurokjának felépítése az lv_emp_name hurok változóval.
  • 5. kódsor: a munkavállaló nevének nyomtatása a hurok minden iterációjában.,
  • 8-as kódsor: Kilépés a hurokból

Megjegyzés: A kurzor-for hurokban a kurzor attribútumok nem használhatók, mivel a kurzor megnyitása, lekérése és bezárása implicit módon történik a hurok számára.