Deklarace kurzoru (SQL)

deklarace_kurzoru ::= DECLARE jmΘno [ INSENSITIVE | SENSITIVE ] [ SCROLL ] CURSOR FOR specifikace_kurzoru;
specifikace_kurzoru  ::= dotazov²_v²raz FOR { READ ONLY | UPDATE [ OF sloupec {, sloupec }à ] }

Touto deklaracφ se deklaruje kurzor, kter² lze otev°φt p°φkazem OPEN, posouvat se a Φφst z n∞j °ßdky p°φkazem FETCH nebo jej pou₧φvat v p°φkazech UPDATE CURRENT OF a DELETE CURRENT OF, a uzav°φt jej p°φkazem CLOSE.

Je-li uvedeno INSENSITIVE, pak zm∞ny v datech provedenΘ prost°ednictvφm kurzoru se v databßzi neprojevφ. Kurzor bude pracovat s vlastnφ tabulkou obsahujφcφ odpov∞∩ na dotazov² v²raz. Je-li uvedeno SENSITIVE, pak se zm∞ny v datech provedenΘ prost°ednictvφm kurzoru projevujφ v databßzi, co₧ je implicitnφ stav. SENSITIVE nesmφ b²t uvedeno v deklaraci kurzoru obsahujφcφho grupovßnφ.

Specifikace SCROLL po₧aduje p°φstup k dat∙m v kurzoru v libovolnΘm po°adφ. Tuto vlastnost majφ ve WinBase602 vÜechny kurzory a proto se SCROLL ignoruje.

Klauzule FOR UPDATE se vyluΦuje s INSENSITIVE a dß se pou₧φt pouze na editovatelnΘ kurzory. Klauzule FOR READ ONLY zabra≥uje v editaci dat a vklßdßnφ nebo ruÜenφ zßznam∙ pomocφ tohoto kurzoru.

Odchylky od Intermediate level sm∞rem k Full level nebo k SQL 3

P°φklad pou₧itφ:

DECLARE cur CURSOR FOR 
  SELECT Firmy.adresa, CAST (SUM(Objednavky.objed) AS INT) 
  FROM Firmy, Objednavky 
  WHERE Objednavky.firma=Firmy.firma 
  GROUP BY Firmy.firma 
FOR READ ONLY;