Kurzory v SQL tvoří nedílnou součást každé databáze, která v podstatě pomáhá uživateli procházet databází bez větších potíží. Prostřednictvím tohoto článku o kurzoru v SQL vám poskytnu všechny potřebné podrobnosti, které musíte potřebovat, než si s ním namočíte nohy.
Níže jsou témata, o kterých budu v tomto článku diskutovat:
- Co je kurzor v SQL?
- Typy SQL kurzorů
- Syntaxe kurzoru SQL
- Životní cyklus kurzoru
Co je kurzor v SQL?
Kurzor v SQL je objekt, který umožňuje procházení řádků libovolné sady výsledků. Díky tomu můžete zpracovat jednotlivý řádek databáze, který je vrácen dotazem. Je to dočasná pracovní oblast nebo kontextová oblast, která se vytváří v paměťovém systému během provádění příkazu SQL, který ukládá načtená data z databáze a pomáhá s nimi manipulovat. Můžete to považovat za uspořádání řádků spolu s ukazatelem ukazujícím na aktuální řádek. Kurzor je databázový objekt, který může obsahovat více než jeden řádek, ale může zpracovat pouze jeden řádek v daném okamžiku. Sada řádků, které drží kurzor, je známá jako aktivní soubor. Můžete tak ovládat záznam tabulky v technice singleton, tj. jeden řádek v libovolném okamžiku.
Nyní, když jste obeznámeni s tím, co je kurzor v SQL, pojďme nyní kupředu a podívejme se na jeho různé typy.
Typy SQL kurzoru
SQL poskytuje dva typy kurzorů, které jsem uvedl níže:
-
Implicitní kurzor
Když jsou v databázi zpracovávány operace DML, jako je INSERT, UPDATE a DELETE, jsou automaticky generovány implicitní kurzory, které framework používá. Tyto typy kurzorů se používají pro interní zpracování a nelze je ovládat nebo odkazovat z jiné kódové oblasti. Implicitní kurzory v SQL pouze podrží ovlivněné řádky operací a mohou odkazovat pouze na nejnovější kurzor pomocí atributů kurzoru, které jsou uvedeny níže v tabulce.
Atribut | Popis |
%FOUND | Vrátí hodnotu TRUE v případě, že příkaz INSERT, UPDATE nebo DELETE ovlivní jeden nebo více řádků nebo příkaz SELECT INTO vrátí jeden nebo více řádků. V ostatních případech vrátí hodnotu FALSE. |
%NOTFOUND | Je to technicky opak atributu %FOUND. Vrací hodnotu TRUE v případě, že příkaz INSERT, UPDATE nebo DELETE neovlivní žádné řádky nebo příkaz SELECT INTO nevrátí žádné řádky. Jinak vrátí pouze FALSE. |
%ISOPEN | Tento atribut vždy vrátí hodnotu FALSE pro implicitní kurzory, protože kurzor SQL se automaticky zavře ihned po provedení příslušného příkazu SQL. |
%ROWCOUNT | Vrátí celkový počet ovlivněných řádků příkazem INSERT, UPDATE nebo DELETE nebo řádků vrácených příkazem SELECT INTO. |
-
Explicitní kurzor
Tento typ kurzoru se generuje vždy, když uživatel zpracovává data prostřednictvím bloku SQL. Obecně platí, že použití dotazu SELECT spouští vytvoření explicitního kurzoru a může obsahovat více než jeden řádek, ale zpracovávat pouze jeden po druhém. Tento typ kurzoru se používá k udržení záznamů přítomných ve sloupci. To umožňuje programátorům vytvořit pojmenovanou kontextovou oblast pro provádění jejich operací DML pro lepší kontrolu. Také musí být definován v bloku SQL a následně je vytvořen pro SELECT dotaz pomocí tohoto kódu.
Abychom lépe porozuměli kurzoru, podívejme se nyní, jaká je syntaxe kurzoru v SQL.
Syntaxe kurzoru SQL
Níže je obecná syntaxe pro vytvoření explicitního kurzoru.
CURSOR cursorName IS selectStatement;
Zde:
cursorName – Představuje platný název kurzoru
selectStatement – představuje výběrový dotaz, který vrátí více řádků
Pojďme nyní pokračovat dále v tomto článku a podívejme se na životní cyklus kurzoru SQL.
Životní cyklus kurzoru
Existuje v zásadě 5 fází životního cyklu kurzoru v SQL, které jsem uvedl níže:
- Prohlásit
DECLARE cursorName CURSOR FOR selectStatement;
Tento krok vám pomůže určit název a datový typ kurzoru a příkaz SELECT bude definovat jeho sadu výsledků.
- Otevřít
OPEN cursorName;
Tento krok vám umožní otevřít a naplnit kurzor jeho provedením.
- Načíst
FETCH NEXT FROM cursor INTO variableList;
Tento krok načte řádek z kurzoru a uloží jej do jedné nebo více proměnných.
[Volitelné] CheckStatus
WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM cursorName; END;
Tato funkce vrací stav posledního příkazu FETCH, který byl proveden proti kurzoru. V případě, že tato funkce vrátí 0, znamená to, že operace FETCH byla úspěšná. K načtení všech řádků z kurzoru se používá klauzule WHILE.
- Zavřít
CLOSE cursorName;
Tento krok vám pomůže zavřít kurzor po dokončení operací.
- Přidělit
DEALLOCATE cursor_name;
Tento krok pomůže uvolnit místo kurzoru a uvolnit místo v paměti.
Tímto bych rád uzavřel tento článek o kurzoru v SQL. Doufám, že vám tento článek pomohl zvýšit hodnotu vašich znalostí. Pro více informací o SQL nebo databázích se můžete podívat na náš komplexní seznam četby zde:Databáze Edureka .
Základy SQL pro začátečníky | Naučte se SQL | SQL kurz pro začátečníky | Edureka
Toto video Edureka o ‚Základech SQL pro začátečníky‘ vám pomůže pochopit základy SQL a také SQL dotazy, které jsou velmi oblíbené a zásadní.
Pokud si přejete absolvovat strukturované školení o MySQL, podívejte se na naše certifikační školení MySQL DBA který přichází s instruktorem vedeným živým školením a reálnými zkušenostmi z projektů. Toto školení vám pomůže porozumět MySQL do hloubky a pomůže vám dosáhnout zvládnutí tohoto předmětu.
Máte na nás otázku? Zmiňte to prosím v sekci komentářů „Kurzor v SQL “ a já se vám ozvu.