Kurzor Oracle PL / SQL: implicitný, explicitný, kurzor FOR Loop (príklad)

Obsah:

Anonim

Čo je CURSOR v PL / SQL?

Kurzor je ukazovateľ na túto kontextovú oblasť. Oracle vytvára kontextovú oblasť na spracovanie príkazu SQL, ktorý obsahuje všetky informácie o príkaze.

PL / SQL umožňuje programátorovi ovládať kontextovú oblasť pomocou kurzora. Kurzor drží riadky vrátené príkazom SQL. Množina riadkov, ktoré drží kurzor, sa označuje ako aktívna množina. Tieto kurzory možno pomenovať aj tak, aby ich bolo možné odkazovať z iného miesta kódu.

V tomto návode sa naučíte

  • Implicitný kurzor
  • Explicitný kurzor
  • Atribúty kurzora
  • Príkaz FOR Loop Cursor

Kurzor je dvoch typov.

  • Implicitný kurzor
  • Explicitný kurzor

Implicitný kurzor

Kedykoľvek sa v databáze vyskytnú akékoľvek operácie DML, vytvorí sa implicitný kurzor, ktorý udrží príslušné riadky v konkrétnej operácii. Tieto kurzory nie je možné pomenovať, a teda ich nemožno ovládať ani odkazovať z iného miesta kódu. Cez atribúty kurzora môžeme odkazovať iba na najnovší kurzor.

Explicitný kurzor

Programátori môžu vytvárať pomenované oblasti kontextu na vykonávanie svojich operácií DML, aby nad nimi získali väčšiu kontrolu. Explicitný kurzor by mal byť definovaný v sekcii deklarácie bloku PL / SQL a je vytvorený pre príkaz 'SELECT', ktorý je potrebné v kóde použiť.

Ďalej sú uvedené kroky, ktoré zahŕňajú prácu s explicitnými kurzormi.

  • Deklarovanie kurzora

    Deklarácia kurzora jednoducho znamená vytvoriť jednu pomenovanú kontextovú oblasť pre príkaz 'SELECT', ktorý je definovaný v deklaračnej časti. Názov tejto kontextovej oblasti je rovnaký ako názov kurzora.

  • Otvára sa kurzor

    Otvorenie kurzora dá PL / SQL pokyn na pridelenie pamäte pre tento kurzor. Pripraví kurzor na načítanie záznamov.

  • Načítanie údajov z kurzora

    V tomto procese sa vykoná príkaz „SELECT“ a načítané riadky sa uložia do pridelenej pamäte. Teraz sa nazývajú ako aktívne množiny. Načítanie údajov z kurzora je aktivita na úrovni záznamu, čo znamená, že k údajom môžeme pristupovať spôsobom po záznamoch.

    Každý príkaz načítania načíta jednu aktívnu množinu a uchováva informácie o konkrétnom zázname. Toto vyhlásenie je rovnaké ako vyhlásenie „SELECT“, ktoré načíta záznam a priradí ho k premennej v klauzule „INTO“, nebude však vyvolávať žiadne výnimky.

  • Zatvorenie kurzora

    Po načítaní celého záznamu teraz musíme zavrieť kurzor, aby sa uvoľnila pamäť pridelená tejto kontextovej oblasti.

Syntax:

DECLARECURSOR  IS ;BEGINFOR I IN LOOP… END LOOP;END;
  • Vo vyššie uvedenej syntaxi obsahuje deklaračná časť deklaráciu kurzora.
  • Kurzor je vytvorený pre príkaz 'SELECT', ktorý je uvedený v deklarácii kurzora.
  • V exekučnej časti je deklarovaný kurzor nastavený v cykle FOR a premenná cyklu „I“ sa v tomto prípade bude správať ako premenná kurzora.

Príklad 1 : V tomto príklade premietneme celé meno zamestnanca z emp tabuľky pomocou cyklu kurzor-FOR.

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;/

Výkon

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Vysvetlenie kódu:

  • Riadok kódu 2 : Deklarovanie kurzora guru99_det pre príkaz „SELECT emp_name FROM emp“.
  • Riadok kódu 4 : Konštrukcia slučky 'FOR' pre kurzor s premennou slučky lv_emp_name.
  • Riadok kódu 5: Vytlačenie mena zamestnanca v každej iterácii cyklu.
  • Riadok kódu 8: Opustite slučku

Poznámka: V cykle Cursor-FOR nie je možné použiť atribúty kurzora, pretože otváranie, načítanie a zatváranie kurzora sa vykonáva implicitne pomocou slučky FOR.