Kurzory – definice, klasifikace, použití kurzorů.

Kurzor je abstraktní datový typ umožňující procházet záznamy vybrané dotazem, který je s kurzorem spojen.

Prostředek pro získání informace z databáze a předání do programu v jazyce PL/SQL

SELECT co vrací více řádků, přes kurzor je možné výsledky procházet

nutno deklarovat, otevřít, načíst data a uzavřít DECLARE CURSOR <jméno kurzoru>IS <dotaz>; OPEN <jméno kurzoru>; FETCH <jméno kurzoru>INTO <jméno proměnné1>, <jméno proměnné2>, …; CLOSE <jméno kurzoru>;

je deklarován a prováděn přímo v těle programu

v tomto typu kurzoru jsou povoleny pouze příkazy SQL, které vrací jednotlivé řádky nebo nevrací žádné řádky,

příkazy SELECT, UPDATE, INSERT a DELETE obsahují implicitní kurzory

musí se shodovat datové typy sloupců a proměnných

implicitní kurzor SELECT musí vracet pouze jeden řádek (SELECT INTO !) SELECT <jméno sloupce 1>, <jméno sloupce 2> INTO <jméno proměnné 1>, <jméno proměnné 2> FROM ... ;

cursor%ISOPEN je otevřený?

cursor%ROWCOUNT dosud zpracováno řádků

Použití kurzorů

Když je potřeba iterovat přes hromadu položek a pro každou položku něco provést (tedy ne pro všechny najednou, ale pro každou zvlášť)

v uložených procedurách

příklad:

Příklad implicitního kurzoru:

  SELECT SUM(salary) INTO Sum FROM Employee

Vloženo z <[link]> 

Dále např. automatické číslování v SŘBD Oracle (Autoinkrement)

Jaká konstrukce se používá pro zpracování víceřádkových SELECT v PL/SQL a jaké jsou její dva typy? 

Používá se konstrukce CURSOR – předává programu PL/SQL info z databáze

Explicitní kurzor - nutno deklarovat, otevřít, načíst data a uzavřít (vše dělá programátor)

Implicitní kurzor - je automaticky deklarován Oraclem a prováděn přímo v těle programu při použití SQL dotazu. Implicitní je proto, že ho uživatel nemusí nijak deklarovat. Pokud např. Select vrací více řádku, se kterými chceme dále pracovat, je nutné použít explicitní kurzor.
