Laborator 5. Colectii de date PL/SQL In multe limbaje de ...
Laborator 5. Colectii de date PL/SQL In multe limbaje de ...
Laborator 5. Colectii de date PL/SQL In multe limbaje de ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Anca Ion, Proiectarea Bazelor <strong>de</strong> Date, 2010<br />
Tipul <strong>de</strong> <strong>date</strong> pentru cheie poate fi: <strong>PL</strong>S_INTEGER, BINARY_INTEGER, sau<br />
VARCHAR2, sau unul dintre subtipurile tipului VARCHAR2: VARCHAR, STRING,<br />
sau LONG. <strong>PL</strong>S_INTEGER si BINARY_INTEGER sunt i<strong>de</strong>ntice.<br />
Exemplu: <strong>de</strong>clararea unei variabile <strong>de</strong> tipul vector asociat(tabel in<strong>de</strong>xat)<br />
DECLARE<br />
TYPE EmpTabTyp IS TABLE OF employees%ROWTYPE INDEX BY <strong>PL</strong>S_INTEGER;<br />
emp_tab EmpTabTyp;<br />
BEGIN<br />
/* selectarea angajatului si salvarea lui in variabila emp_tab */<br />
SELECT * INTO emp_tab(1) FROM employees WHERE employee_id = 100;<br />
END;<br />
Observatie: pentru a adauga mai <strong>multe</strong> intregistrari trebuie creat un cursor (vezi<br />
laboratorul 3 (pg.4-5), exemplu cursor implicit)<br />
o Declararea variabilelor <strong>de</strong> tip colectie in <strong>PL</strong>/<strong>SQL</strong><br />
Exemplu: <strong>de</strong>clararea tabelelor grupate, a vectorilor cu dimensiune fixa, vectori<br />
asociati<br />
DECLARE<br />
TYPE nested_type IS TABLE OF VARCHAR2(30);<br />
TYPE varray_type IS VARRAY(5) OF INTEGER;<br />
TYPE assoc_array_num_type IS TABLE OF NUMBER INDEX BY <strong>PL</strong>S_INTEGER;<br />
TYPE assoc_array_str_type IS TABLE OF VARCHAR2(32) INDEX BY <strong>PL</strong>S_INTEGER;<br />
TYPE assoc_array_str_type2 IS TABLE OF VARCHAR2(32) INDEX BY VARCHAR2(64);<br />
v1 nested_type;<br />
v2 varray_type;<br />
v3 assoc_array_num_type;<br />
v4 assoc_array_str_type;<br />
v5 assoc_array_str_type2;<br />
BEGIN<br />
--initializare<br />
v1 := nested_type('Shipping','Sales','Finance','Payroll');<br />
v2 := varray_type(1, 2, 3, 4, 5); -- numai 5 intregi poti fi aduagati, <strong>de</strong>oarece dim maxima este 5<br />
v3(99) := 10;<br />
v3(7) := 100; -- subscripturile pot fi numai numere intregi<br />
v4(42) := 'Smith'; -- subscripturile pot fi numai numere intregi<br />
v4(54) := 'Jones';<br />
v5('Canada') := 'North America'; -- subscripturile pot fi si siruri <strong>de</strong> caractere<br />
v5('Greece') := 'Europe';<br />
END;<br />
Exemplu: <strong>de</strong>clararea colectiilor folosind %TYPE<br />
DECLARE<br />
TYPE few_<strong>de</strong>pts IS VARRAY(10) OF VARCHAR2(30);<br />
TYPE many_<strong>de</strong>pts IS VARRAY(100) OF VARCHAR2(64);<br />
some_<strong>de</strong>pts few_<strong>de</strong>pts;<br />
local_<strong>de</strong>pts some_<strong>de</strong>pts%TYPE;<br />
global_<strong>de</strong>pts some_<strong>de</strong>pts%TYPE;<br />
BEGIN<br />
NULL;<br />
END;