Oracle PL/SQL Kurzor: Implicitní, Explicitní Kurzor PRO Smyčce [Příklad]
Co je KURZOR v PL/SQL?
kurzor je ukazatelem této kontextové oblasti. Oracle vytváří kontextovou oblast pro zpracování příkazu SQL, který obsahuje všechny informace o příkazu.
PL / SQL umožňuje programátorovi ovládat kontextovou oblast kurzorem. Kurzor drží řádky vrácené příkazem SQL. Sada řádků, které kurzor drží, se označuje jako aktivní sada., Tyto kurzory mohou být také pojmenovány tak, aby mohly být odkázány z jiného místa kódu.
V tomto tutoriálu se naučíte,
- Implicitní Kurzor
- Explicitní Kurzor
- Kurzor Atributy
- PRO Smyčce Kurzor prohlášení,
kurzor je ze dvou typů.
- Implicitní Kurzor
- Explicitní Kurzor
Implicitní Kurzor
Kdykoli DML operace se vyskytují v databázi, implicitní kurzor je vytvořen, který drží řádků postižených, v konkrétním provozu., Tyto kurzory nelze pojmenovat, a proto je nelze ovládat ani odkázat z jiného místa kódu. Můžeme odkazovat pouze na nejnovější kurzor prostřednictvím atributů kurzoru.
Explicitní Kurzor
Programátoři mohou vytvořit pojmenované rámci oblasti vykonávat jejich DML operace získat větší kontrolu nad ním. Explicitní kurzor by měl být definován v části deklarace bloku PL/SQL a je vytvořen pro příkaz „Vybrat“, který je třeba použít v kódu.
níže jsou uvedeny kroky, které se podílejí na práci s explicitními kurzory.,
- deklarování kurzoru
Deklarace kurzoru jednoduše znamená vytvořit jednu pojmenovanou kontextovou oblast pro příkaz „SELECT“, který je definován v části deklarace. Název této kontextové oblasti je stejný jako název kurzoru.
- Otevření Kurzoru
Otevření kurzoru poučí PL/SQL, přidělit paměť pro tento kurzor. To bude kurzor připraven načíst záznamy.
- 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 jsou nyní nazývány jako aktivní sady. Načítání dat z kurzoru je aktivita na úrovni záznamu, což znamená, že můžeme přistupovat k datům rekordním způsobem.
každý příkaz načte jednu aktivní sadu a obsahuje informace o tomto konkrétním záznamu. Toto prohlášení je stejné jako „SELECT“ prohlášení, které načte záznam a přiřadí proměnné v klauzuli „do“, ale nebude házet žádné výjimky.
- zavření kurzoru
jakmile je nyní načten veškerý záznam, musíme kurzor zavřít tak, aby byla uvolněna paměť přidělená této kontextové oblasti.,
Syntaxe:
- Ve výše uvedené syntaxi, prohlášení část obsahuje deklarace kurzoru a kurzor proměnné, do které se načtené údaje budou přiřazeny.
- kurzor je vytvořen pro příkaz „SELECT“, který je uveden v prohlášení kurzoru.
- v části provedení se deklarovaný kurzor otevře, načte a zavře.
atributy kurzoru
implicitní kurzor i explicitní kurzor mají určité atributy, ke kterým lze přistupovat. Tyto atributy poskytují více informací o operacích kurzoru., Níže jsou uvedeny různé atributy kurzoru a jejich použití.
Atribut Kurzor | Popis |
% | vrací Logický výsledek „TRUE“, pokud poslední operace načtení přinesl rekordních úspěšně, jinak vrátí FALSE. |
% NOTFOUND | to funguje opačně, než %zjistil, že vrátí „TRUE“, pokud nejnovější operace načtení nemohla načíst žádný záznam., |
%ISOPEN | vrací Logický výsledek „TRUE“, je-li daný kurzor je již otevřen, jinak je vrátí ‚FALSE‘ |
%ROWCOUNT | vrací číselnou hodnotu. Dává skutečný počet záznamů, které byly ovlivněny aktivitou DML. |
Příklad 1: v tomto příkladu uvidíme, jak deklarovat, otevřít, načíst a zavřít explicitní kurzor.
pomocí kurzoru promítneme veškeré jméno zaměstnance z tabulky emp., Budeme také používat atribut kurzoru pro nastavení smyčky pro načtení všech záznamů z kurzoru.
Výstupní
Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY Total rows fetched is 3
Kód Vysvětlení:
- Kód 2. řádek: Deklarovat kurzor guru99_det pro výkaz SELECT emp_name OD emp‘.
- kódový řádek 3: deklarace proměnné lv_emp_name.
- kódový řádek 5: otevření kurzoru guru99_det.
- kódový řádek 6: nastavení příkazu Basic loop pro načtení všech záznamů v tabulce ‚emp‘.,
- kódový řádek 7: načte data guru99_det a přiřadí hodnotu lv_emp_name.
- kódový řádek 9: pomocí atributu kurzoru ‚% NOTFOUND ‚ zjistíte, zda je načten veškerý záznam v kurzoru. Pokud je načten, vrátí se „TRUE“ a ovládání skončí ze smyčky, jinak bude ovládací prvek pokračovat v načítání dat z kurzoru a tisku dat.
- kódový řádek 11: Výstupní podmínka pro příkaz smyčky.
- kódový řádek 12: vytiskněte načtené jméno zaměstnance.,
- kódový řádek 14: pomocí atributu kurzoru ‚% ROWCOUNT ‚ vyhledejte celkový počet záznamů, které byly ovlivněny/načteny v kurzoru.
- kódový řádek 15: po opuštění smyčky je kurzor uzavřen a přidělená paměť je uvolněna.
pro příkaz kurzoru smyčky
„For LOOP“ lze použít pro práci s kurzory. Název kurzoru můžeme dát místo limitu rozsahu ve výkazu FOR loop tak, aby smyčka fungovala od prvního záznamu kurzoru až po poslední záznam kurzoru., Kurzorová proměnná, otevření kurzoru,načtení a zavření kurzoru bude provedeno implicitně smyčkou FOR.
Syntaxe:
DECLARECURSOR <cursor_name> IS <SELECT statement>;BEGIN FOR I IN <cursor_name> LOOP . . END LOOP;END;
- Ve výše uvedené syntaxi, prohlášení část obsahuje deklarace kurzoru.
- kurzor je vytvořen pro příkaz „SELECT“, který je uveden v prohlášení kurzoru.
- v části provedení 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 Všechny jméno zaměstnance z tabulky emp pomocí kurzoru-pro smyčku.
Výstupní
Employee Fetched:BBB Employee Fetched:XXXEmployee Fetched:YYY
Kód Vysvětlení:
- Kód 2. řádek: Deklarovat kurzor guru99_det pro výkaz SELECT emp_name OD emp‘.
- kódový řádek 4: vytvoření smyčky “ pro “ pro kurzor s proměnnou smyčky lv_emp_name.
- kódový řádek 5: tisk názvu zaměstnance v každé iteraci smyčky.,
- kódový řádek 8: ukončete smyčku
Poznámka: V kurzoru-pro smyčku nelze atributy kurzoru použít, protože otevírání, načítání a zavírání kurzoru se provádí implicitně pro smyčku.