Creative Saplings

PL / SQL – Cursori

ianuarie 30, 2021
No Comments
Reclame

În acest capitol, vom discuta despre cursorii din PL / SQL. Oracle creează o zonă de memorie, cunoscută sub numele de zonă de context, pentru procesarea unei instrucțiuni SQL, care conține toate informațiile necesare procesării instrucțiunii; de exemplu, numărul de rânduri procesate etc.

Un cursor este un indicator către această zonă contextuală. PL / SQL controlează zona contextuală printr-un cursor. Un cursor reține rândurile (unul sau mai multe) returnate de o instrucțiune SQL. Setul de rânduri pe care le ține cursorul este denumit set activ.

Puteți denumi un cursor astfel încât să poată fi menționat într-un program pentru a prelua și procesa rândurile returnate de instrucțiunea SQL, una la un moment dat. Există două tipuri de cursoare –

  • Cursoare implicite
  • Cursoare explicite

Cursori implicite

Cursoare implicite sunt create automat de Oracle ori de câte ori este executată o instrucțiune SQL, atunci când nu există un cursor explicit pentru instrucțiune. Programatorii nu pot controla cursorii implicați și informațiile din acesta.

Ori de câte ori este emisă o instrucțiune DML (INSERT, UPDATE și DELETE), un cursor implicit este asociat cu această instrucțiune. Pentru operațiile INSERT, cursorul conține datele care trebuie inserate. Pentru operațiile UPDATE și DELETE, cursorul identifică rândurile care ar fi afectate.

În PL / SQL, puteți face referire la cel mai recent cursor implicit ca cursorul SQL, care are întotdeauna atribute precum% FOUND ,% ISOPEN,% NOTFOUND și% ROWCOUNT. Cursorul SQL are atribute suplimentare,% BULK_ROWCOUNT și% BULK_EXCEPTIONS, concepute pentru a fi utilizate cu instrucțiunea FORALL. Următorul tabel oferă descrierea celor mai utilizate atribute –

S.Nu Atribut & Descriere
1

% FOUND

Returnează TRUE dacă o instrucțiune INSERT, UPDATE sau DELETE a afectat unul sau mai multe rânduri sau o instrucțiune SELECT INTO a returnat unul sau mai multe rânduri. În caz contrar, returnează FALS.

2

% NOTFOUND

Opusul logic al% FOUND. Returnează TRUE dacă o instrucțiune INSERT, UPDATE sau DELETE nu a afectat niciun rând sau o instrucțiune SELECT INTO nu a returnat niciun rând. În caz contrar, returnează FALS.

3

% ISOPEN

Întoarce întotdeauna FALS pentru cursorile implicite, deoarece Oracle închide automat cursorul SQL după executarea instrucțiunii SQL asociate.

4

% ROWCOUNT

Returnează numărul de rânduri afectate de o instrucțiune INSERT, UPDATE sau DELETE sau returnate de o instrucțiune SELECT INTO.

Orice atribut de cursor SQL va fi accesat ca sql% attribute_name așa cum se arată mai jos în exemplu.

Exemplu

Vom folosi tabelul CLIENTI pe care l-am creat și folosit în capitolele anterioare.

Următorul program va actualiza tabelul și va crește salariul fiecărui client cu 500 și va folosi SQL% Atributul ROWCOUNT pentru a determina numărul de rânduri afectate –

Când codul de mai sus este executat la promptul SQL, acesta produce următorul rezultat –

6 customers selected PL/SQL procedure successfully completed. 

Dacă verificați înregistrările din tabelul clienților, veți găsi că rândurile au fost actualizate –

Cursori expliciți

Cursorii expliciți sunt cursori definiți de programator pentru a obține mai mult control asupra zona contextuală. Un cursor explicit trebuie definit în secțiunea de declarație a blocului PL / SQL. Este creat pe o instrucțiune SELECT care returnează mai multe rânduri.

Sintaxa pentru crearea unui cursor explicit este –

CURSOR cursor_name IS select_statement; 

cu un cursor explicit include pașii următori –

  • Declararea cursorului pentru inițializarea memoriei
  • Deschiderea cursorului pentru alocarea memoriei
  • Obținerea cursorului pentru recuperarea datelor
  • Închiderea cursorului pentru a elibera memoria alocată

Declararea cursorului

Declararea cursorului definește cursorul cu un nume și declarația SELECT asociată. De exemplu –

CURSOR c_customers IS SELECT id, name, address FROM customers; 

Deschiderea cursorului

Deschiderea cursorului alocă memoria pentru cursor și o pregătește pentru preluarea rândurilor returnate prin declarația SQL din ea. De exemplu, vom deschide cursorul definit mai sus după cum urmează –

OPEN c_customers; 

Preluarea cursorului

Preluarea cursorului implică accesarea unui rând la o vreme. De exemplu, vom prelua rânduri de la cursorul deschis mai sus după cum urmează –

FETCH c_customers INTO c_id, c_name, c_addr; 

Închiderea cursorului

Închiderea cursorului înseamnă eliberarea memoria alocată.De exemplu, vom închide cursorul deschis mai sus după cum urmează –

CLOSE c_customers;

Exemplu

Următorul este un exemplu complet pentru a ilustra conceptele de cursoare explicite & minua;

Când codul de mai sus este executat la promptul SQL, acesta produce următorul rezultat –

1 Ramesh Ahmedabad 2 Khilan Delhi 3 kaushik Kota 4 Chaitali Mumbai 5 Hardik Bhopal 6 Komal MP PL/SQL procedure successfully completed. 
Reclame

Articles
Previous Post

Ciclul Sustanon 250

Next Post

Cât de multe date utilizează Netflix - cum să le controlați și să utilizați mai puține

Lasă un răspuns Anulează răspunsul

Articole recente

  • Cele mai bune școli de fotografie din lume, 2020
  • Cetățenii suverani își duc filosofia anti-guvernamentală la drumuri
  • Ghid de costuri de reparații stuc
  • Muckrakers (Română)
  • Oncologie de precizie

Arhive

  • februarie 2021
  • ianuarie 2021
  • decembrie 2020
  • noiembrie 2020
  • octombrie 2020
  • septembrie 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.