cursor
ďalšie názvy článku: kurzor, SQL kurzor
Popis
Príkaz jazyka SQL
Databázový kurzor je objekt, pomocí kterého je možné ovládat pohyb po výsledku dotazu, nejčastěji v rámci příkazu SELECT. Zjednodušeně řečeno jde o to, že výsledek dotazu je na stranu klienta vrácen nejen sekvenčně, ale také jaksi naráz – není tedy možný pohyb po jednotlivých záznamech. A právě za tímto účelem jsou prakticky ve všech databázových platformách zaváděny kurzory.
Databázové kurzory se nejčastěji používají v uložených procedurách a triggerech, kdy je potřeba projít výsledek dotazu záznam po záznamu. Jinými slovy – kurzorů se využívá ve spojení s transakčním rozšířením jazyka SQL. Mnohé databázové platformy umožňují nejen posun vpřed, ale také vzad. Chcete-li, můžete si databázový kurzor představit také jako cyklus.
Mezi základní operace pro práci s kurzory patří jeho deklarace (je nutno říci, jaký dotaz má být kurzorem zpracován), otevření a uzavření (obvykle příkazy OPEN a CLOSE) a přechod na další/předchozí záznam (příkaz FETCH). Přechod přitom nemusí být pouze o jeden jediný záznam, ale může se jednat například o přechod vpřed o pět záznamů.
Práce s kurzory se v jednotlivých systémech mírně liší, proto je nezbytné dohledat podrobnosti v odpovídající dokumentaci. Například v případě platformy PostgreSQL bude mít práce s kurzorem následující podobu:
Príklad
BEGIN TRANSACTION
DECLARE kurzor CURSOR FOR SELECT * FROM osoby;
FETCH NEXT FROM kurzor; --přejde na další záznam
FETCH NEXT FROM kurzor;--přejde na další záznam
FETCH PRIOR FROM kurzor;--přejde na předchozí záznam
CLOSE kurzor;--uzavře kurzor
COMMIT TRANSACTION;
DECLARE kurzor CURSOR FOR SELECT * FROM osoby;
FETCH NEXT FROM kurzor; --přejde na další záznam
FETCH NEXT FROM kurzor;--přejde na další záznam
FETCH PRIOR FROM kurzor;--přejde na předchozí záznam
CLOSE kurzor;--uzavře kurzor
COMMIT TRANSACTION;
Pozri aj
Kurzor v PL/SQL
Kurzor v Oracle
Kurzor v MS SQL
zdroj: http://www.dbsvet.cz/view.php?cisloclanku=2004100101