PL/SQL (Procedural Language şi SQL)

Unitatea de program

Structura unităţilor de program

Bloc anonimProcedurăFuncţie
DECLARE PRECEDURE nume [(def_param [, def_param]...)] {IS | AS} FUNCTION nume [(def_param [, def_param]...)] RETURN tip_data {IS | AS}
[declaraţii de variabile, constante, cursoare, excepţii, tipuri, proceduri locale, funcţii locale, etc.]
BEGIN
  instrucţiuni
  [pentru funcţii este necesară instructiunea: RETURN valoare;]
  [EXCEPTION
    tratare excepţii
  ]
END;

unde "def_param" are forma:
denumire [{IN | OUT | IN OUT}] tip_data [:=expresie]

Utilizare

Intr-o unitate de program se poate include altă unitate, deci se pot imbrica unităţi de program
Un bloc anonim se execută în locul în care apare
O procedură sau funcţie se execută prin folosirea numelui acesteia (cu eventuali parametrii actuali)

Extragerea de valori

Pentru a extrage valori dintr-un bloc/procedură/funcţie se pot folosi următoarele variante:
  1. Prin parametri de ieşire (pentru o procedură sau funcţie) sau valoarea unei funcţii
  2. Prin variabile globale (dacă unitatea de program este inclusă în altă unitate de program)
    In Sql*Plus (sau iSql*Plus):
  3. Prin înserarea valorilor într-un tabel din baza de date. Acest tabel poate fi GLOBAL TEMPORARY, sau un tabel care se foloseşte numai pentru o anumită extragere de date (se crează tabelul, se apelează un bloc în care se adaugă înregistrări in tabel, se foloseşte tabelul, se şterge tabelul).
    CREATE GLOBAL TEMPORARY TABLE valori(a varchar2(200));
  4. Prin utilizarea pachetului dbms_output în sql*plus. Acest pachet gestionează o zonă tampon, care se poate extrage pe ecran. El este descris în fişierul {ORACLE_HOME}/rdbms/admin/dbmsotpt.sql.