Oracle PL / SQL kurzor: implicit, explicit, kurzor a hurok számára (példa)

Tartalomjegyzék:

Anonim

Mi az a kurzor a PL / SQL-ben?

A kurzor mutató erre az összefüggési területre. Az Oracle létrehoz egy kontextusterületet egy SQL utasítás feldolgozásához, amely minden információt tartalmaz az utasításról.

A PL / SQL lehetővé teszi a programozó számára, hogy a kurzoron keresztül vezérelje a kontextus területét. A kurzor tartja az SQL utasítás által visszaadott sorokat. A kurzor által tartott sorokat aktív halmaznak nevezzük. Ezeket a kurzorokat meg lehet nevezni, hogy a kód egy másik helyéről hivatkozhassanak rájuk.

Ebben az oktatóanyagban megtanulja-

  • Implicit kurzor
  • Kifejezett kurzor
  • Kurzorattribútumok
  • FOR Loop Kurzor utasítás

A kurzor kétféle lehet.

  • Implicit kurzor
  • Kifejezett kurzor

Implicit kurzor

Valahányszor bármilyen DML művelet történik az adatbázisban, létrejön egy implicit kurzor, amely az érintett sorokat tartja az adott műveletben. Ezeket a kurzorokat nem lehet megnevezni, ezért nem lehet őket vezérelni vagy hivatkozni a kód egy másik helyéről. Csak a legfrissebb kurzorra hivatkozhatunk a kurzorattribútumokon keresztül.

Kifejezett kurzor

A programozók létrehozhatnak megnevezett kontextusterületet DML-műveleteik végrehajtásához, hogy jobban ellenőrizzék azt. Az explicit kurzort meg kell határozni a PL / SQL blokk deklarációs szakaszában, és a kódban használt 'SELECT' utasításhoz kell létrehozni.

Az alábbiakban bemutatjuk azokat a lépéseket, amelyek az explicit kurzorokkal végzett munkához kapcsolódnak.

  • A kurzor deklarálása

    A kurzor deklarálása egyszerűen azt jelenti, hogy létrehozzunk egy megnevezett kontextusterületet a 'SELECT' utasításhoz, amelyet a deklarációs rész definiál. Ennek a környezetnek a neve megegyezik a kurzor nevével.

  • Kurzor megnyitása

    A kurzor megnyitása utasítja a PL / SQL-t, hogy foglalja le a memóriát ehhez a kurzorhoz. A kurzor készen áll a rekordok beolvasására.

  • Adatok lekérése a kurzorból

    Ebben a folyamatban a 'SELECT' utasítás végrehajtásra kerül, és a beolvasott sorokat a lefoglalt memória tárolja. Ezeket most aktív halmazoknak nevezzük. Az adatok lekérése a kurzorból rekordszintű tevékenység, ami azt jelenti, hogy rekordonként férhetünk hozzá az adatokhoz.

    Minden lekérési utasítás egy aktív halmazt fog lekérni, és tárolja az adott rekord információit. Ez az utasítás megegyezik a 'SELECT' utasítással, amely beolvassa a rekordot és hozzárendeli a változóhoz az 'INTO' záradékban, de nem vet ki kivételeket.

  • A kurzor bezárása

    Miután az összes rekord lekérésre került, be kell zárnunk a kurzort, hogy felszabaduljon az ehhez a kontextushoz rendelt memória.

Szintaxis:

DECLARECURSOR  IS ;BEGINFOR I IN 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ójában megadott 'SELECT' utasításhoz jön létre.
  • A végrehajtási részben a deklarált kurzor a FOR ciklusban van beállítva, és az 'I' hurokváltozó ebben az esetben kurzorváltozóként fog viselkedni.

1. példa : Ebben a példában az alkalmazottak összes nevét kivetítjük az emp táblából egy kurzor-FOR hurok segítségével.

DECLARECURSOR guru99_det IS SELECT emp_name FROM emp;BEGINFOR lv_emp_name IN guru99_detLOOPDbms_output.put_line(‘Employee Fetched:‘||lv_emp_name.emp_name);END LOOP;END;/

Kimenet

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Kód Magyarázat:

  • 2. kódsor: A „SELECT emp_name FROM emp” utasítás guru99_det kurzorának deklarálása.
  • 4. kódsor: A kurzor 'FOR' ciklusának megalkotása az lv_emp_name hurokváltozóval.
  • 5. kódsor : Az alkalmazott nevének kinyomtatása a hurok minden iterációjában.
  • 8. kódsor : Lépjen ki a hurokból

Megjegyzés: A Kurzor-FOR ciklusban a kurzorattribútumok nem használhatók, mivel a kurzor megnyitását, lehívását és bezárását implicit módon a FOR ciklus végzi.