logo

Kaj je kazalec v SQL?

Kazalec je začasni pomnilnik ali začasna delovna postaja. Dodeljuje ga Baza podatkov Strežnik v času izvajanja operacij DML (Data Manipulation Language) na tabeli s strani uporabnika. Kazalci se uporabljajo za shranjevanje tabel baze podatkov.

Obstajata dve vrsti kazalcev: implicitni kazalci in eksplicitni kazalci. Ti so razloženi v nadaljevanju.

  1. Implicitni kazalci: Implicitni kazalci so znani tudi kot privzeti kazalci strežnika SQL SERVER. Te kazalce dodeli SQL SERVER, ko uporabnik izvaja operacije DML.
  2. Eksplicitni kazalci: Eksplicitne kazalce ustvarijo uporabniki, kadar koli jih uporabnik zahteva. Eksplicitni kazalci se uporabljajo za pridobivanje podatkov iz tabele na način vrstica za vrstico.

Kako ustvariti eksplicitni kazalec?

  1. Deklariraj predmet kazalca

Sintaksa:



DECLARE cursor_name CURSOR FOR SELECT * FROM table_name

poizvedba:

DECLARE s1 CURSOR FOR SELECT * FROM studDetails>

2. Odprite povezavo kazalca

zgodovina v Javi

Sintaksa:

ODPRTI cursor_connection

poizvedba:

OPEN s1>

Pridobi podatke iz kazalca Obstaja skupno 6 načinov za dostop do podatkov iz kazalca. So naslednji:

  1. NAJPREJ se uporablja za pridobitev samo prve vrstice iz kazalne tabele.
  2. ZADNJI se uporablja za pridobitev samo zadnje vrstice iz tabele kazalke.
  3. NASLEDNJI se uporablja za pridobivanje podatkov v smeri naprej iz kazalne tabele.
  4. PREJ se uporablja za pridobivanje podatkov v smeri nazaj iz kazalne tabele.
  5. ABSOLUTNO n se uporablja za pridobivanje natančnega nthvrstico iz kurzorske tabele.
  6. SORODNIK n se uporablja za pridobivanje podatkov na inkrementalni in dekrementalni način.

Sintaksa:

PRINESI NASLEDNJI/PRVI/ZADNJI/PREJŠNJI/ABSOLUTNI n/RELATIVNI n IZ imena_kurzorja

poizvedba:

FETCH FIRST FROM s1 FETCH LAST FROM s1 FETCH NEXT FROM s1 FETCH PRIOR FROM s1 FETCH ABSOLUTE 7 FROM s1 FETCH RELATIVE -2 FROM s1>
  • Zapri povezavo kazalca

Sintaksa:

ZAPRI cursor_name

poizvedba:

CLOSE s1>
  • Sprostite pomnilnik kazalca

Sintaksa:

DEALLOCATE cursor_name

poizvedba:

DEALLOCATE s1>

Kako ustvariti implicitni kazalec?

Implicitni kazalec je kazalec, ki ga samodejno ustvari PL/SQL, ko izvedete stavek SQL. Implicitnega kazalca vam ni treba izrecno deklarirati ali odpreti. Namesto tega PL/SQL namesto vas upravlja kazalec v zakulisju.

Če želite ustvariti implicitni kazalec v PL/SQL, morate preprosto izvesti stavek SQL. Če želite na primer pridobiti vse vrstice iz tabele EMP, lahko uporabite naslednjo kodo:

poizvedba:

BEGIN FOR emp_rec IN SELECT * FROM emp LOOP DBMS_OUTPUT.PUT_LINE('Employee name: ' || emp_rec.ename); END LOOP; END;>

V PL/SQL, ko izvajamo VSTAVI , NADGRADNJA oz IZBRIŠI operacij, se samodejno ustvari implicitni kazalec. Ta kazalec drži podatke, ki jih je treba vstaviti, ali identificira vrstice, ki jih je treba posodobiti ali izbrisati. Ta kazalec lahko v svoji kodi imenujete kazalec SQL. Ta kazalec SQL ima več uporabnih lastnosti.

  1. %FOUND je res, če je zadnja operacija SQL vplivala na vsaj eno vrstico.
  2. %NOTFOUND je res, če ni vplival na nobeno vrstico.
  3. %ROWCOUNT vrne število prizadetih vrstic.
  4. %ISOPEN preveri, ali je kazalec odprt.

Poleg teh atributov sta %BULK_ROWCOUNT in %BULK_EXCEPTIONS specifična za stavek FORALL, ki se uporablja za izvajanje več operacij DML hkrati. %BULK_ROWCOUNT vrne število vrstic, na katere vpliva posamezna operacija DML, medtem ko %BULK_EXCEPTION vrne vse izjeme, do katerih je prišlo med operacijami.

poizvedba:

CREATE TABLE Emp( EmpID INT PRIMARY KEY, Name VARCHAR(50), Country VARCHAR(50), Age int(2), Salary int(10) ); -- Insert some sample data into the Customers table INSERT INTO Emp (EmpID, Name,Country, Age, Salary) VALUES (1, 'Shubham', 'India','23','30000'), (2, 'Aman ', 'Australia','21','45000'), (3, 'Naveen', 'Sri lanka','24','40000'), (4, 'Aditya', 'Austria','21','35000'), (5, 'Nishant', 'Spain','22','25000'); Select * from Emp;>

Izhod:

img1

Ta program posodobi tabelo tako, da poveča plačo vsakega zaposlenega za 1500. Po posodobitvi se uporabi atribut SQL%ROWCOUNT, da se ugotovi, na koliko vrstic je vplivala operacija.

poizvedba:

DECLARE total_rows number; BEGIN UPDATE Emp SET Salary = Salary + 1500; total_rows := SQL%ROWCOUNT; dbms_output.put_line(total_rows || ' rows updated.'); END;>

Izhod:

5 Emp selected PL/SQL procedure successfully completed.>

Izjeme kazalca SQL

Kadar koli izvedemo poizvedbo SQL, obstaja možnost nepričakovane napake. Kazalec gre skozi vsak niz vrstic, da se vrne v poizvedbi SQL.

Obstaja nekaj zelo priljubljenih izjem:

  1. Podvojena vrednost: Ta vrsta napake se pojavi, ko kazalec poskuša vstaviti zapis ali zbirko, ki že obstaja v bazi podatkov. tem vrstam napak se je mogoče izogniti z ustrezno obdelavo napak conf
  2. Neveljavno stanje kazalca: Kadarkoli je kazalec v neveljavnem stanju, bo ta vrsta napake prikazana kot napaka.
  3. Časovna omejitev zaklepanja: To se zgodi, ko poskuša kazalec pridobiti zaklepanje vrstice ali tabele, vendar zaklepanje že drži druga transakcija.

Potreba po kazalcu v strežniku SQL

  1. Kazalci nam omogočajo obdelavo podatkov vrstico za vrstico, kar je lahko koristno, ko moramo izvesti zapletene izračune ali transformacije podatkov.
  2. Kazalci nam omogočajo večkratno ponavljanje niza rezultatov, kar je lahko uporabno, ko moramo izvesti več operacij na istih podatkih.
  3. Kazalci so lahko uporabni, ko moramo združiti več tabel s kompleksnimi odnosi, na primer pri obdelavi hierarhičnih podatkovnih struktur ali pri izvajanju rekurzivnih poizvedb.
  4. Kazalci nam omogočajo izvajanje operacij, kot so posodabljanje, brisanje ali vstavljanje zapisov na podlagi nekega pogoja ali merila.
  5. Kazalci so še posebej uporabni pri obdelavi podatkov iz več tabel, kjer razmerja niso enostavna.

Omejitve kazalca SQL Server

Ker ima kazalec nekaj omejitev, ga je treba uporabiti le, če ni druge izbire. Te omejitve vključujejo:

  1. Pri obdelavi podatkov zaklene podnabor ali celotno tabelo.
  2. Tabela posodabljanja kazalca beleži eno vrstico naenkrat, kar upočasni njeno delovanje.
  3. Čeprav so zanke počasnejše od kazalcev, imajo več dodatnih stroškov.
  4. Drug dejavnik, ki vpliva na hitrost kurzorja, je količina vrstic in stolpcev, vnesenih v kurzor.

pogosta vprašanja:

V.1 Kako se lahko izognemo kazalcem?

odgovor:

Primarna funkcija kazalcev je navigacija po vrstici po tabeli. Sledi nekaj preprostih metod za izogibanje kazalcem:

V.2 Kako uporabljati zanko While v kazalcu SQL?

odgovor:

Uporaba zanke while, ki omogoča vstavljanje nabora rezultatov v začasno tabelo, je najenostavnejši način, da se izognete potrebi po kazalcu.

V.3 Kaj so uporabniško določene funkcije v kazalcu SQL?

odgovor:

Včasih se nastali niz vrstic izračuna z uporabo kazalcev. To lahko dosežemo z uporabo uporabniško definirane funkcije, ki je skladna s specifikacijami.

V.4 Uporaba spojin s kazalcem SQL?

odgovor:

V primerih, ko je treba obdelati ogromne zapise, join zmanjša število vrstic kode tako, da obdela le tiste stolpce, ki izpolnjujejo podani pogoj.