06.09.2014 Views

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 ...

SHOW MORE
SHOW LESS

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;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!