Explicitní kurzor vs Implicitní kurzor
Pokud jde o databáze, kurzor je řídicí struktura, která umožňuje procházení záznamy v databázi. Kurzor poskytuje mechanismus pro přiřazení názvu příkazu SQL select a pak jej lze použít k manipulaci s informacemi v tomto příkazu SQL. Implicitní kurzory jsou automaticky vytvářeny a používány pokaždé, když je v příkazu PL / SQL vydán příkaz Select, pokud neexistuje explicitně definovaný kurzor. Explicitní kurzory, jak název napovídá, jsou explicitně definovány vývojářem. V PL / SQL je explicitním kurzorem ve skutečnosti pojmenovaný dotaz definovaný pomocí kurzoru klíčového slova.
Co je implicitní kurzor?
Implicitní kurzory jsou automaticky vytvářeny a používány společností Oracle při každém vydání příkazu select. Použijete-li implicitní kurzor, systém správy databází (DBMS) provede operace otevření, načtení a uzavření automaticky. Implicitní kurzory by se měly používat pouze s příkazy SQL, které vracejí jeden řádek. Pokud příkaz SQL vrátí více než jeden řádek, použití implicitního kurzoru způsobí chybu. Implicitní kurzor je automaticky spojen s každým příkazem jazyka DML (Data Manipulation Language), jmenovitě příkazy INSERT, UPDATE a DELETE. Implicitní kurzor se také používá ke zpracování příkazů SELECT INTO. Při načítání dat pomocí implicitních kurzorů může být vyvolána výjimka NO_DATA_FOUND, když příkaz SQL nevrací žádná data. Implicitní kurzory mohou navíc zvýšit výjimky TOO_MANY_ROWS, když příkaz SQL vrací více než jeden řádek.
Co je explicitní kurzor?
Jak bylo uvedeno výše, explicitní kurzory jsou dotazy definované pomocí jména. Explicitní kurzor lze považovat za ukazatel na sadu záznamů a ukazatel lze posunout vpřed v rámci sady záznamů. Explicitní kurzory poskytují uživateli úplnou kontrolu nad otevíráním, zavíráním a načítáním dat. Více řádků lze také získat pomocí explicitního kurzoru. Explicitní kurzory mohou také brát parametry stejně jako jakákoli funkce nebo procedura, takže proměnné v kurzoru mohou být měněny pokaždé, když jsou spuštěny. Explicitní kurzory navíc umožňují načíst celý řádek do proměnné záznamu PL / SQL. Při použití explicitního kurzoru musí být nejprve deklarováno pomocí názvu. K atributům kurzoru lze přistupovat pomocí názvu přiřazeného kurzoru. Po deklarování je třeba nejprve otevřít kurzor. Poté lze spustit načítání. Pokud je třeba načíst více řádků, musí být operace načtení provedena ve smyčce. Nakonec musí být kurzor uzavřen.
Rozdíl mezi explicitní kurzor a implicitní kurzor
Hlavní rozdíl mezi implicitním kurzorem a explicitním kurzorem spočívá v tom, že explicitní kurzor musí být definován explicitně zadáním jména, zatímco implicitní kurzory jsou automaticky vytvořeny při vydání příkazu select. Kromě toho lze pomocí explicitních kurzorů načíst více řádků, zatímco implicitní kurzory mohou načíst pouze jeden řádek. Výjimky NO_DATA_FOUND a TOO_MANY_ROWS se při použití explicitních kurzorů nezvýší, na rozdíl od implicitních kurzorů. Implicitní kurzory jsou v podstatě zranitelnější vůči chybám dat a poskytují méně programové kontroly než explicitní kurzory. Také implicitní kurzory jsou považovány za méně účinné než explicitní kurzory.