Úvod do kurzoru v PL / SQL

PL / SQL je jedním z nejpoužívanějších programovacích jazyků, pokud jde o programování databáze. Některé důležité pojmy PL / SQL se musí programátorům PL / SQL naučit a rozumět jim, aby je správně používaly. Kurzor je jedním z nich. V programu PL / SQL musí být příkazy SQL provedeny na konci. Kurzor je jako ukazatel, který se používá k bodu kontextové oblasti vytvořené společností Oracle k provedení příkazu SQL. Kurzor obsahuje všechny řádky vrácené po zpracování příkazů SQL. Sada řádku, kterou drží kurzor, se označuje jako aktivní sada. Kurzor může být také pojmenován, aby jej programátor v programu dále použil. V tomto tématu se dozvíme o kurzorech v PL / SQL.

Typy kurzoru

V programování PL / SQL se používají 2 typy kurzoru:

1. Implicitní kurzory

Jak název napovídá, implicitní kurzory jsou kurzory, které jsou automaticky vytvořeny společností Oracle při provádění příkazů DML, jako je INSERT, DELETE, UPDATE. Pokud programátor nevytvoří žádný kurzor, vytvoří ho Oracle sám, aby držel řádky ovlivněné příkazy DML. Tyto kurzory nemohou být pojmenovány programátorem, a proto nemohou být odkazovány a použity na jiném místě v kódu. Přestože Oracle poskytuje některé atributy k provádění některých operací, jako je

% FOUND, % NOTFOUND, % ROWCOUNT, % ISOPEN.

S.No.AtributPopis
1.%NALEZENOVrací true, pokud příkazy DML, jako je INSERT,

ODSTRANIT, UPDATE ovlivní jeden nebo více řádků nebo příkaz SELECT vrátí jeden nebo více řádků. Jinak vrátí False

2.%NENALEZENOJe to opak atributu% FOUND. Vrací true, pokud žádný z řádků není ovlivněn příkazem DML nebo příkaz SELECT nevrací žádné výsledky. Jinak vrátí False.
3.%JE OTEVŘENOV případě implicitních kurzorů vždy vrací False, protože Oracle uzavře kurzor těsně po provedení příkazů SQL.
4.% ROWCOUNTVrací počet řádků. Tj. Počet řádků, které jsou dotčeny zmíněným DML
příkazy programátoru v kódu PL / SQL jako INSERT, DELETE a UPDATE nebo počet řádků, které jsou vráceny příkazem SELECT INTO.
Příklad

Scénář: Aktualizace známek všech studentů v tabulce „student“ v angličtině Subjekt se sloupcem „předmět“ o 10.

DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF​ sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN​ affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/

2. Explicitní kurzory

Explicitní kurzory jsou kurzory, které jsou definovány programátory, aby měly větší kontrolu nad kontextovou oblastí (kde jsou uloženy výsledky dotazů SQL). Tyto kurzory musí být nejprve definovány v deklaračním bloku programu PL / SQL. Je vytvořen pro příkazy SQL, které po zpracování vrací více než jeden řádek. Existuje zvláštní postup, který je třeba dodržovat pro použití výslovného kurzoru. Kroky k použití explicitního kurzoru jsou uvedeny níže:

1. Deklarovat kurzor: Používá se k pojmenování kontextové oblasti / kurzoru spolu s příkazem select, který je třeba provést.

Syntax

CURSOR cursor_name IS SELECT statement;

2. Otevřete kurzor: Otevřete kurzor, přidělte mu paměť a zpřístupněte ji pro načtení záznamů vrácených příkazem SQL.

Syntax

OPEN cursor_name;

3. Načtěte kurzor: V tomto procesu je přístup k jednomu řádku najednou. Příkaz SELECT je spuštěn a načtené řádky jsou uloženy v kontextové oblasti. Vyvolá záznamy a přiřadí je k definované proměnné.

Syntax

FETCH cursor_name INTO variable;

4. Zavřete kurzor: Tento krok se používá k uzavření kurzoru otevřeného výše pro přidělování paměti, jakmile jsou všechny uložené řádky úspěšně načteny.

Syntax

CLOSE cursor_name;

Příklad

Scénář: Načtěte jméno, adresu a celkové procento studentů v tabulce

„student“, který má sloupce „jméno“, „adresa“ a „procento“

DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/

Akce kurzoru

Na rozdíl od SQL, který pracuje na všech řádcích ve výsledkové sadě najednou, se kurzor používá hlavně ve scénářích, když programátor chce zpracovat a načíst data po jednom řádku najednou.

Níže jsou uvedeny některé akce kurzoru:

  1. Vyhlásit kurzor: Před použitím je důležité deklarovat kurzor. Kurzor je deklarován definováním příkazu SQL, který je třeba zpracovat.
  2. Otevřít kurzor: Po deklaraci je kurzor otevřen a naplněn datovými daty zpracováním příkazu SQL.
  3. Načíst kurzor: Po otevření kurzoru musí být výstupní řádky vyzvednuty jeden po druhém, aby bylo možné v případě potřeby provést jakoukoli manipulaci.
  4. Zavřít kurzor: Po veškeré manipulaci s daty. Vytvořený kurzor musí být uzavřen
  5. Deallocate: Tento krok zahrnuje odstranění kurzoru a uvolnění všech prostředků, které obsahuje.

Význam kurzoru v PL / SQL

Ukazování na umístění paměti a provádění odpovídajících akcí je jedním z důležitých úkolů v jakémkoli programovacím jazyce. V PL / SQL se to provádí kurzory. Kurzory hrají klíčovou roli, pokud jde o provádění různých úkolů, a to pojmenováním oblasti paměti (kontextová oblast), kde se ukládají výsledky dotazů SQL. K záznamům můžeme přistupovat jeden po druhém a v případě potřeby v něm provádět jakékoli manipulace nebo je podle toho zobrazovat na konzole. Explicitní kurzory jsou efektivnější, poskytují více programové kontroly a jsou méně citlivé na chyby dat, takže jsou velmi užitečné v programování PL / SQL než implicitní.

Závěr

Programování databáze je v dnešní době velmi populární a PL / SQL je jedním z jazyků, který by se v něm měl velmi dobře používat. Kurzory poskytují programátorům větší kontrolu nad přístupem k získaným datům. Pro programátora, který pracuje s PL / SQL, je důležité znát použití a význam Cursor pro efektivní práci.

Doporučené články

Toto je průvodce kurzory v PL / SQL. Zde diskutujeme typy kurzorů používaných v PL / SQL programování s Kurzorovými akcemi a význam kurzoru. Další informace naleznete také v následujících článcích -

  1. Typy spojení v SQL
  2. SQL Vložit dotaz
  3. Tabulka v SQL
  4. Zástupný znak v SQL
  5. Top 6 typů spojení v MySQL s příklady