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

Obsah:

Anonim

Co je CURSOR v PL / SQL?

Kurzor je ukazatel na tuto kontextovou oblast. Oracle vytváří kontextovou oblast pro zpracování příkazu SQL, který obsahuje všechny informace o příkazu.

PL / SQL umožňuje programátoru ovládat kontextovou oblast pomocí kurzoru. Kurzor obsahuje řádky vrácené příkazem SQL. Sada řádků, které drží kurzor, se označuje jako aktivní sada. Tyto kurzory lze také pojmenovat, aby je bylo možné odkazovat z jiného místa kódu.

V tomto výukovém programu se naučíte-

  • Implicitní kurzor
  • Explicitní kurzor
  • Atributy kurzoru
  • Příkaz FOR Loop Cursor

Kurzor je dvou typů.

  • Implicitní kurzor
  • Explicitní kurzor

Implicitní kurzor

Kdykoli se v databázi vyskytnou jakékoli operace DML, vytvoří se implicitní kurzor, který obsahuje ovlivněné řádky v dané konkrétní operaci. Tyto kurzory nelze pojmenovat, a proto je nelze ovládat ani odkazovat z jiného místa kódu. Prostřednictvím atributů kurzoru můžeme odkazovat pouze na nejnovější kurzor.

Explicitní kurzor

Programátoři mají povoleno vytvářet pojmenovanou kontextovou oblast k provádění svých operací DML, aby nad ní získali větší kontrolu. Explicní kurzor by měl být definován v sekci deklarace bloku PL / SQL a je vytvořen pro příkaz 'SELECT', který je třeba v kódu použít.

Níže jsou uvedeny kroky, které zahrnují práci s explicitními kurzory.

  • Deklarace kurzoru

    Deklarace kurzoru jednoduše znamená vytvořit jednu pojmenovanou kontextovou oblast pro příkaz 'SELECT', který je definován v deklarační části. Název této kontextové oblasti je stejný jako název kurzoru.

  • Otevření kurzoru

    Otevření kurzoru dá PL / SQL pokyn k přidělení paměti tomuto kurzoru. Připraví kurzor k načtení záznamů.

  • Načítání dat z kurzoru

    V tomto procesu se provede příkaz 'SELECT' a načtené řádky se uloží do přidělené paměti. Ty se nyní nazývají jako aktivní sady. Načítání dat z kurzoru je aktivita na úrovni záznamu, což znamená, že k datům můžeme přistupovat způsobem záznam po záznamu.

    Každý příkaz načtení načte jednu aktivní sadu a uchovává informace o konkrétním záznamu. Toto prohlášení je stejné jako prohlášení 'SELECT', které načte záznam a přiřadí proměnné v klauzuli 'INTO', ale nebude vyvolávat žádné výjimky.

  • Zavření kurzoru

    Jakmile je nyní načten celý záznam, musíme zavřít kurzor, aby byla uvolněna paměť přidělená této kontextové oblasti.

Syntax:

DECLARECURSOR  IS ;BEGINFOR I IN LOOP… END LOOP;END;
  • Ve výše uvedené syntaxi obsahuje deklarační část deklaraci kurzoru.
  • Kurzor je vytvořen pro příkaz 'SELECT', který je uveden v deklaraci kurzoru.
  • V prováděcí části je deklarovaný kurzor nastaven ve smyčce FOR a proměnná smyčky „I“ se v tomto případě bude chovat jako proměnná kurzoru.

Příklad 1 : V tomto příkladu promítneme celé jméno zaměstnance z emp tabulky pomocí smyčky 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ýstup

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Vysvětlení kódu:

  • Řádek kódu 2 : Deklarace kurzoru guru99_det pro příkaz 'SELECT emp_name FROM emp'.
  • Řádek kódu 4 : Konstrukce smyčky 'FOR' pro kurzor s proměnnou smyčky lv_emp_name.
  • Řádek kódu 5: Tisk jména zaměstnance v každé iteraci smyčky.
  • Řádek kódu 8: Opusťte smyčku

Poznámka: Ve smyčce Cursor-FOR nelze použít atributy kurzoru, protože otevírání, načítání a zavírání kurzoru se provádí implicitně smyčkou FOR.