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;