Sectiunea DECLARE
Consta
in codul de definire al variabilelor, constantelor, cursoarelor si a tipurilor
speciale de date. In interiorul blocului trebuie declarate toate tipurile
de variabile. Este necesar sa se atribuie acestora un tip de date care
sa se conformeze regulilor Oracle. De asemenea, variabilele trebuie sa
respecte standardele de denumire Oracle.
Declararea variabilelor
Variabilele sunt
valori care se modifica în interiorul
unui bloc PL/SQL. Variabilele PL/SQL pot fi declarate si
optional le poate fi asignate o valoare initiala, in sectiunea DECLARE
a unui bloc. Alte variabile referite in partea declarativa trebuie declarate
separat in declaratiile anterioare.
Observatie: Sectiunea
DECLARE a unui bloc nu poate fi executata de ea însasi. Aceasta sectiune
începe cu instructiunea DECLARE, dupa care, pe linii separate sunt
definite variabile individuale. Fiecare definitie se încheie cu caracterul
“;”.
Variabilele pot fi în
acelasi timp initializate.
Declararea constantelor
Constantele sunt definite în acelasi mod ca si variabilele, dar acestea
reprezinta valori statice.Orice incercare de a modifica valoarea
unei constante va cauza producerea unei erori PL/SQL.
%TYPE, %ROWTYPE si tipuri definite de utilizator
%TYPE sau %ROWTYPE sunt tipuri derivate din alte variabile sau tabele.
Este convenabila utilizarea acestor tipuri in sectiunea de declarare atunci
cand se doreste ca variabilele declarate sa aiba acelasi tip ca al
coloanelor unui tabel sau ca al unor variabile deja declarate pentru a
reduce posibilele nepotrviri de tip.
(mentine consistenta
în interiorul blocurilor de cod).
%TYPE întoarce tipul unei coloane date dintr-un
tabel.
Exemplu:
%ROWTYPE intoarce combinatia tipurilor coloanelor dintr-o inregistrare
Variabilele
nu sunt limitate la o singura valoare. . În Oracle, %ROWTYPE creeaza
o variabila înregistrare.Variabilele declarate cu ajutorul
atributului %ROWTYPE se mai numesc agregate.
NumeInreg NumeTab%ROWTYPE;
%ROWTYPE este utilizata pentru a declara acelasi tip de inregistrare
ca cel definit intr-un tabel.
Exemplu
Tipuri definite de utilizator (subtipuri)
SUBTYPE tip_nou IS tip_original;
SUBTYPE num IS NUMBER;
mynum num;
SUBTYPE nametype IS customer.fname%TYPE;
Structura Record (inregistrare)
TYPE student_rec_type IS RECORD (
studentid NUMBER(5),
first_name VARCHAR2(20),
last_name VARCHAR2(20)
);
student_a student_rec_type;
student_b student_rec_type;
student_a.first_name := 'Walker';
-- referirea unui camp din inregistrare
Atributul %ROWCOUNT
Pastreaza
un contor al rândurilor pe care instructiunile SQL dintr-un anumit
bloc le-au accesat într-un cursor.
DECLARE
select
emp_id, emp_name from employees;
records_processed :=
employee_cursor%ROWCOUNT;
ATENTIE la posibilele conflicte de nume la declararea variabilelor.
De exemplu, daca se declara o variabila ca având acelasi nume ca
un tabel care se doreste accesat prin cod PL/SQL, variabila locala va avea
prioritate asupra tabelului.