Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Čo sú kurzory?

Kurzory sú databázové objekty, ktoré vám umožňujú prístup a manipulovať s údajmi jeden riadok naraz z výsledkovej sady vrátenej dotazom SQL. Myslite na ne ako na ukazovatele, ktoré sa pohybujú v riadkoch v súprave výsledkov.

Tu je zrútenie toho, čo sú a prečo sa používajú:

Kľúčové koncepty:

* Výsledok: Zbierka riadkov vrátených dotazom SQL. Keď spustíte príkaz „Vyberte“, databázový server generuje set výsledkov.

* Spracovanie riadku: Kurzory vám umožňujú načítať a spracovať každý riadok nastaveného výsledku individuálne. Je to v rozpore so štandardnými operáciami SQL, ktoré zvyčajne pracujú na celom výsledku stanovenom naraz.

* ukazovateľ/iterátor: Kurzor v podstate pôsobí ako ukazovateľ alebo iterátor, ktorý sleduje prístup k aktuálnemu radu. Kurzor môžete posunúť vpred a získať prístup k nasledujúcim riadkom.

Prečo používať kurzory?

Kurzory sa všeobecne používajú, keď potrebujete vykonávať komplexné operácie v každom riadku výsledkovej sady, ktoré je ťažké alebo nemožné dosiahnuť pri štandardných príkazoch SQL. Bežné scenáre zahŕňajú:

* Podmienené aktualizácie/deletes: Možno budete musieť aktualizovať alebo odstrániť riadok na základe hodnôt nájdených v iných riadkoch rovnakej sady výsledkov alebo v iných tabuľkách.

* Výpočty založené na predchádzajúcich riadkoch: Možno budete musieť vypočítať bežný celkový, kĺzavý priemer alebo inú kumulatívnu hodnotu, ktorá závisí od hodnôt v predchádzajúcich riadkoch.

* Integrácia s externými systémami: Možno budete musieť načítať údaje z databázy a potom tieto údaje použiť na interakciu s externými aplikáciami alebo API, pričom každý riadok spracujte jednotlivo.

* Komplexná logika v uložených postupoch: Kurzory sa často používajú v rámci uložených postupov, keď potrebujete implementovať komplexnú obchodnú logiku, ktorá vyžaduje iterovanie prostredníctvom súboru výsledkov.

* Nahlásiť: Generovanie vlastných správ alebo vykonávanie zložitého formátovania údajov sa často spolieha na spracovanie riadku po riadku.

Ako fungujú kurzory (zjednodušené):

1. deklarujte kurzor: Najprv deklarujete kurzor, v ktorom zadáte príkaz „Select“, ktorý vygeneruje súbor výsledkov, s ktorým bude kurzor fungovať.

2. Otvorte kurzor: Otvorenie kurzora vykonáva príkaz „select` a vytvorí súpravu výsledkov. Kurzor je umiestnený pred prvým riadkom.

3. načítať riadky: Na získanie údajov z aktuálneho riadku a presunutie kurzoru do nasledujúceho riadku použijete príkaz „Fetch`.

4. spracujte údaje: Vo vnútri slučky spracujete údaje získané z každého riadku. To by mohlo zahŕňať aktualizáciu ďalších tabuliek, vykonávanie výpočtov alebo volanie externých postupov.

5. Zatvorte kurzor: Po spracovaní všetkých riadkov zatvoríte kurzor a uvoľníte zdroje, ktoré používa.

6. Nakoniec vyriešite kurzor.

Príklad (Konceptuálna - špecifická syntax sa líši podľa databázy):

`` sql

- Vyhláste kurzor

Deklarovať kurzor my_cursor

Vyberte zamestnanec_id, plat od zamestnancov, kde oddelenie_id =10;

- Otvorte kurzor

Otvorte my_cursor;

- Načítať prvý riadok

Načítať ďalej z my_cursora do @emp_id, @Salary;

- slučka prostredníctvom súpravy výsledkov

Zatiaľ čo @@ fetch_status =0 - Skontrolujte, či bol načítanie úspešný

Začať

- Spracujte údaje (príklad:Zvýšte plat, ak je pod prahom)

Ak @Salary <50000

Začať

Aktualizácia zamestnancov stanovila plat =plat * 1.10 kde zamestnanec_id =@emp_id; - zvýšiť plat o 10%

Koniec;

- Načítať ďalší riadok

Načítať ďalej z my_cursora do @emp_id, @Salary;

Koniec;

- Zatvorte kurzor

Close My_Cursor;

- Dealling kurzoru

DealLocate my_Cursor;

`` `

Dôležité úvahy a nevýhody:

* Vplyv na výkon: Kurzory môžu byť výrazne pomalšie ako operácie SQL založené na stanovení, najmä pri riešení veľkých súprav výsledkov. Spracovanie riadku po rade je vo svojej podstate menej účinné ako spracovanie údajov v dávkach. Vždy, keď je to možné, skúste dosiahnuť požadovaný výsledok pomocou štandardných dopytov SQL.

* zložitosť: Kurzory môžu váš kód zložitejšie a ťažšie udržiavať.

* Uzamknutie problémov: Kurzory môžu držať zámky na databázových zdrojoch dlhšie obdobia, čo potenciálne vedie k problémom s tvrdením a výkonom.

* Alternatívy: Predtým, ako sa uchýlite k kurzorom, preskúmajte alternatívy, ako napríklad:

* SET-založené operácie SQL: Rovnaký výsledok často môžete dosiahnuť pomocou šikovného dotazu SQL.

* uložené postupy s dočasnými tabuľkami: Vytvorte dočasnú tabuľku na zadržanie medziproduktovej sady výsledkov a potom vykonajte operácie na dočasnej tabuľke.

* Použitie aplikačného kódu (napr. Python, Java) na spracovanie údajov: Načítajte celý výsledok nastavený do vašej aplikácie a vykonajte tam spracovanie riadku po riadku. To môže byť niekedy efektívnejšie ako používanie kurzorov.

V súhrne sú kurzory výkonným, ale často menej efektívnym nástrojom na spracovanie riadku po riadku v databázach. Používajte ich iba v prípade potreby a starostlivo zvážte dôsledky výkonu. Snažte sa používať SQL Operations, kedykoľvek je to možné.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené