Laboratoare Baze de Date

Previzualizare laborator:

Extras din laborator:

Tipuri de date compuse colecţie (INDEX-BY TABLE, NESTED TABLE, VARRAY)

- recapitulare

Colecţiile permit să fie prelucrate simultan mai multe variabile de acelaşi tip. Fiecare element

are un indice unic, care determină poziţia sa în colecţie.

În PL/SQL există trei tipuri de colecţii:

-tablouri indexate (index-by tables);

-tablouri imbricate (nested tables);

-vectori (varrays sau varying arrays).

Obs :

- Tipul index-by table poate fi utilizat numai în declaraţii PL/SQL. Tipurile varray şi nested table pot

fi utilizate atât în declaraţii PL/SQL, cât şi în declaraţii la nivelul schemei (de exemplu, pentru

definirea tipului unei coloane a unui tabel relaţional).

- Singura diferenţă sintactică între tablourile indexate şi cele imbricate este clauza INDEX BY. Dacă

această clauză lipseşte, atunci tipul este tablou imbricat.

- Atribute şi metode ale unei colecţii: (prezentare succintă)

Atribut sau metodă Descriere

COUNT numărul componentelor colecţiei

FIRST Indicele primului element din tablou

LAST Indicele ultimului element din tablou

EXISTS întoarce TRUE dacă există în tablou componenta cu indexul

specificat

NEXT returnează indicele următoarei componente

PRIOR returnează indicele componentei anterioare

DELETE şterge una sau mai multe componente.

EXTEND Adaugă elemente la sfârşit

LIMIT Numărul maxim de elemente al unei colecţii (pentru vectori), null

pentru tablouri imbricate

TRIM şterge elementele de la sfârşitul unei colecţii

Ultimele 3 metode nu sunt valide pentru index-by tables.

- bulk bind permite ca toate liniile unei colecţii să fie transferate simultan printr--singură operaţie.

-este realizat cu ajutorul comenzii FORALL, ce poate fi folosită cu orice tip de colecţie:

FORALL index IN lim_inf..lim_sup

comanda_sql;

Cursorul SQL are un atribut compus %BULK_ROWCOUNT care numără liniile afectate de iteraţiile

comenzii FORALL. %BULK_ROWCOUNT(i) reprezintă numărul de linii procesate de a i-a execuţie

a comenzii SQL.

- Regăsirea rezultatului unei interogări în colecţii (înainte de a fi trimisă motorului PL/SQL) se

poate obţine cu ajutorul clauzei BULK COLLECT:

…BULK COLLECT INT-nume_colecţie [,nume_colecţie]…

- Clauza poate să apară în:

-comenzile SELECT INT-(cursoare implicite),

-comenzile FETCH INT-(cursoare explicite),

-clauza RETURNING INT-a comenzilor INSERT, UPDATE, DELETE.

Exerciţii:

1. Analizaţi şi comentaţi exemplul următor. Afişaţi valorile variabilelor definite.

DECLARE

TYPE tab_index IS TABLE OF NUMBER

INDEX BY BINARY_INTEGER;

TYPE tab_imbri IS TABLE OF NUMBER;

TYPE vector IS VARRAY(15) OF NUMBER;

v_tab_index tab_index;

v_tab_imbri tab_imbri;

v_vector vector;

i INTEGER;

BEGIN

v_tab_index(1) := 72;

v_tab_index(2) := 23;

v_tab_imbri := tab_imbri(5, 3, 2, 8, 7);

v_vector := vector(1, 2);

-- afisati valorile variabilelor definite; exemplu dat pentru v_tab_imbri

i:=v_tab_imbri.FIRST;

WHILE (i <= v_tab_imbri.LAST) LOOP

DBMS_OUTPUT.PUT_LINE('v_tab_imbri: '||v_tab_imbri(i));

i:= v_tab_imbri.NEXT(i);

END LOOP;

END;

/

1. Tablouri indexate (index-by tables)

- Tabloul indexat PL/SQL are două componente:

-coloană ce cuprinde cheia primară pentru acces la liniile tabloului

--coloană care include valoarea efectivă a elementelor tabloului.

- Declararea tipului TABLE se face respectând următoarea sintaxă:

TYPE nume_tip IS TABLE OF

{tip_coloană | variabilă%TYPE |

nume_tabel.coloană%TYPE [NOT NULL] |

nume_tabel%ROWTYPE}

INDEX BY tip_indexare;

Observații:

lab 1-4

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Laborator1_BDOO_master.pdf
  • Laborator2_BDOO_master.pdf
  • Laborator3_BDOO_master.pdf
  • Laborator4_BDOO_master.pdf
Alte informații:
Tipuri fișiere:
pdf
Nota:
8/10 (1 voturi)
Nr fișiere:
4 fisiere
Pagini (total):
72 pagini
Imagini extrase:
72 imagini
Nr cuvinte:
26 153 cuvinte
Nr caractere:
144 241 caractere
Marime:
827.97KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Profesorului:
Letitia Velcescu
Sus!