Kurzor v MS SQL

Popis

Príkaz jazyka SQL
V jednotlivých aplikačných rozhraniach (API) sa spravidla kurzory delia do následujúcich štyroch typov:
  1. Statické kurzory
  2. Kurzory riadené sadov kľúčov
  3. Dynamické kurzory
  4. Rýchle kurzory typu „iba dopredu“


Presný spôsob implementácie uvedených typov kurzorov a ich názvy sa medzi jednotlivými rozhraniami API a objektovými modelmi môžu mierne líšiť. Ich základné vlastnosti sú ale v podstate rovnaké.
Rôzne typy kurzorov sa líšia najmä v možnosti rolovania (posuvu) a takzvanej citlivosti voči zmenám v databáze vykonaných počas životnosti kurzora.

Statické kurzory

Statický kurzor predstavuje akúsi „snímku“ databázy v jednom časovom okamžiku. Tento typ kurzora je často označovaný ako snímková sada záznamov (snapshot).
Po vytvorení statického kurzoru sa celá sada záznamov v podstate vygeneruje v akejsi dočasnej tabuľke. Po tomto vytvorení sa údaje obsiahnuté v kurzore nezmenia.

Kurzory riadené sadou kľúčov

Pod pojmom sada kľúčov sa myslí množina hodnôt, ktorá jednoznačne identifikuje jednotlivé riadky v databáze.
Tento typ kurzora má nasledujúce významné vlastnosti:


Dynamické kurzory


Tento typ kurzora je nutné používať „opatrne“ a iba v nevyhnutných prípadoch. Najvhodnejšie je použiť tento typ kurzora pre podkladové tabuľky, ktoré nie sú príliš rozsiahle. Kompenzáciou za réžiu pri príkaze FETCH, kedy sa opätovne zostavuje SELECT, môže byť vlastnosť daného RDBMS. Pri zostavovaní SELECT-u častokrát budú všetky dáta v cache pamäti (v závislosti od záťaže a dostupných zdrojov), t.j. že dynamický kurzor môže z veľkej časti bežať priamo v pamäti RAM.

Rýchle kurzory typu „iba dopredu“

Tento typ kurzora sa v literatúre bežne označuje aj pojmom „požiarna hadica“ (Fire Hose Cursor).
Najprv sa musí otvoriť, behom spracovania dát je možné sa posúvať iba vpred a nakoniec ho dealokujeme (bez zatvorenia). Za určitých podmienok sa tento typ kurzora aicky prevádza na typ iného kurzora (statický, dynamický, riadený sadou kľúčov).
Kurzor je určený iba pre operácie čítania, v inom prípade bude aicky prevedený na iný typ.


Pozri aj

SQL kurzor