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

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
cursor employee_cursor is
    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.