Cursor-ul în PL/SQL

Extras din referat Cum descarc?

ORACLE foloseste arii de lucru private SQL, arii care executa declaratii SQL si care memoreaza informatii de procesare. Cursorul este o constructie PL/SQL, care iti permite sa denumesti aceste arii de lucru si care acceseaza informatia.
Exista doua tipuri de cursor:
- Cursor implicit - este declarat de PL/SQL implicit pentru toate comenzile de manipulare a datelor (INSERT, UPDATE, DELETE);
- daca o instructiune LMD nu afecteaza nici o linie a tabelei nu se genereaza eroare, insa exceptia trebuie tratata folosind atributele speciale ale cursorilor;
- Cursor explicit - se foloseste pentru a procesa individual fiecare linie (inregistrare) returnata de o instructiune SELECT ce returneaza mai multe inregistrari.
- multimea inregistrarilor returnate de o instructiune SELECT este numita multime rezultat.
- cursorul pastreaza un pointer catre linia curenta in cadrul unei multimi rezultat.
Atribute ale cursorului implicit:
SQL%ROWCOUNT
SQL%FOUND
SQL%NOTFOUND
Exemplu: Folosirea atributului SQL%FOUND
CREATE TABLE dept_temp AS SELECT * FROM departments;
DECLARE
dept_no NUMBER(4) := 270;
BEGIN
DELETE FROM dept_temp WHERE department_id = dept_no;
IF SQL%FOUND THEN --daca stergerea s-a efectuat cu succes
INSERT INTO dept_temp VALUES (270, 'Personnel', 200, 1700);
END IF;
END;
%NOTFOUND
%NOTFOUND este atributul opus lui %FOUND. %NOTFOUND este TRUE daca INSERT, UPDATE sau DELETE nu afecteaza nici o inregistrare din baza de date sau SELECT INTO nu returneaza nici o inregistrare.Altfel este FALSE.
- %ROWCOUNT
%ROWCOUNT returneaza numarul de inregistrari afectate de una din comenzile INSERT, UPDATE, sau DELETE sau numarul de inregistrari afectate de SELECT INTO. %ROWCOUNT este 0 daca comanda INSERT, UPDATE, sau DELETE nu afecteaza nici o inregistrae, sau SELECT INTO nu returneaza nici o inregistrare.
Exemplu: Folosirea SQL%ROWCOUNT
DECLARE
mgr_no NUMBER(6) := 122;
BEGIN
DELETE FROM angajati WHERE manager_id = mgr_no;
DBMS_OUTPUT.PUT_LINE( 'nr de angajati stersi este: ' || TO_CHAR(SQL%ROWCOUNT));
END;
Valoarea atributului SQL%ROWCOUNT se refera la cea mai recenta comanda SQL executata in PL/SQL.
Controlul explicit al cursorului - pe pasi
Cursorul explicit poate fi controlat prin 4 tipuri separate de actiuni:
DECLARE
Numeste cursorul, si defineste structura interogarii care sa fie efectuate cu el. La acest nivel, interogarea este parcursa (coloane, tabele, etc) dar nu este executata.
Instructiunea CURSOR
Este folosita pentru a declara un cursor explicit. Parametrii pot fi definiti pentru a permite substitutia valorilor in interogare cand cursorul este OPEN. Variabilele pot fi deasemeni referite in interogare, dar trebuie sa fie declarate inaintea instructiunii CURSOR.
Sintaxa:
CURSOR identificator [(parameter details)] IS query-expression;
unde query-expression este o instructiune SELECT care poate include majoritatea clauzelor, dar nu o clauza INTO. Nu trebuie definit NULL ca un obiect SELECT.
Exemplu :
DECLARE
CURSOR c1 IS
SELECT nume, salariul, data_angajare FROM angajati
WHERE id_angajat=200;
OPEN
Executa interogarea, legand orice variabila care a fost referentiata. Liniile intoarse de interogare, numita "set-activ" sunt acum disponibile pentru extragere.
Este utilizata in cadrul actiunilor executabile dintr-un bloc, si stabileste un set activ de randuri.
Sintaxa:
OPEN cursor-identif [(lista argumente)] ;
Exemplu:
OPEN c1;
Cursorul va pointa catre primul rand in setul activ, ca de exemplu:
> SCOTT 3000 16-jan-90
FORD 3000 03-dec-81
De observat ca exceptiile nu sunt lansate daca cererea nu intoarce niciun rand cand este deschis cursorul. Starea cursorului poate, totusi, sa fie testata dupa un FETCH.
FETCH
Memoreaza valorile din linia curenta in variabile. Linia curenta este linia la care cursorul pointeaza. Fiecare FETCH produce mutarea cursorului sa indice la linia urmatoare in setul activ, si deci fiecare FETCH va accesa o linie diferita returnata de interogare.


Fisiere in arhiva (1):

  • Cursor-ul in PL-SQL.doc

Imagini din acest referat Cum descarc?

Promoție: 1+1 gratis

După plată vei primi prin email un cod de download pentru a descărca gratis oricare alt referat de pe site (vezi detalii).


Descarcă aceast referat cu doar 4 € (1+1 gratis)

Simplu și rapid în doar 2 pași: completezi adresa de email și plătești. După descărcarea primului referat vei primi prin email un cod promo pentru a descărca orice alt referat.

1. Numele, Prenumele si adresa de email:

ex. Andrei, Oana
ex. Popescu, Ionescu

Pe adresa de email specificată vei primi link-ul de descărcare și codul promo. Asigură-te că adresa este corectă și că poate primi e-mail-uri.

2. Alege modalitatea de plată preferată:


* La pretul afișat se adaugă 19% TVA.


Hopa sus!