Cursor-ul în PL/SQL

Previzualizare referat:

Extras din referat:

ORACLE foloseşte arii de lucru private SQL, arii care execută declaraţii SQL şi care memorează informaţii de procesare. Cursorul este o construcţie PL/SQL, care iţi permite să denumeşti aceste arii de lucru şi care accesează informaţia.

Există două tipuri de cursor:

- Cursor implicit - este declarat de PL/SQL implicit pentru toate comenzile de manipulare a datelor (INSERT, UPDATE, DELETE);

- dacă o instrucţiune LMD nu afectează nici o linie a tabelei nu se generează eroare, însă excepţia trebuie tratată folosind atributele speciale ale cursorilor;

- Cursor explicit - se foloseşte pentru a procesa individual fiecare linie (înregistrare) returnată de o instrucţiune SELECT ce returnează mai multe înregistrări.

- mulţimea înregistrărilor returnate de o instructiune SELECT este numită mulţime rezultat.

- cursorul păstrează un pointer către linia curentă în cadrul unei mulţimi 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 paşi

Cursorul explicit poate fi controlat prin 4 tipuri separate de acţiuni:

DECLARE

Numeşte cursorul, şi defineşte structura interogării care să fie efectuate cu el. La acest nivel, interogarea este parcursă (coloane, tabele, etc) dar nu este executată.

Instrucţiunea CURSOR

Este folosită pentru a declara un cursor explicit. Parametrii pot fi definiţi pentru a permite substituţia valorilor în interogare când cursorul este OPEN. Variabilele pot fi deasemeni referite în interogare, dar trebuie să fie declarate înaintea instrucţiunii CURSOR.

Sintaxa:

CURSOR identificator [(parameter details)] IS query-expression;

unde query-expression este o instrucţiune SELECT care poate include majoritatea clauzelor, dar nu o clauză 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

Execută interogarea, legând orice variabilă care a fost referenţiată. Liniile întoarse de interogare, numită "set-activ" sunt acum disponibile pentru extragere.

Este utilizată în cadrul acţiunilor executabile dintr-un bloc, şi stabileşte un set activ de rânduri.

Sintaxa:

OPEN cursor-identif [(lista argumente)] ;

Exemplu:

OPEN c1;

Cursorul va pointa către primul rând în setul activ, ca de exemplu:

> SCOTT 3000 16-jan-90

FORD 3000 03-dec-81

De observat că excepţiile nu sunt lansate dacă cererea nu întoarce niciun rând când este deschis cursorul. Starea cursorului poate, totuşi, să fie testată după un FETCH.

FETCH

Memorează valorile din linia curentă în variabile. Linia curentă este linia la care cursorul pointează. Fiecare FETCH produce mutarea cursorului să indice la linia următoare în setul activ, şi deci fiecare FETCH va accesa o linie diferită returnată de interogare.

Observații:

Academia de Studii Economice

Facultatea de Cibernetică, Statistică şi Informatică Economică

Descarcă referat

Pentru a descărca acest document,
trebuie să te autentifici in contul tău.

Structură de fișiere:
  • Cursor-ul in PL-SQL.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
6/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
13 pagini
Imagini extrase:
13 imagini
Nr cuvinte:
2 241 cuvinte
Nr caractere:
12 389 caractere
Marime:
18.83KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Referat
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Sus!