In blocuri instrucţiunea SELECT se poate folosi sub forma:
SELECT lista_expresii INTO {lista_variabile | variabila_inregistrare} FROM lista_surse_de_date [WHERE conditie] [diverse clauze];
In clauza INTO se precizează o listă de variabile sau o variabilă înregistrare,
declarate anterior, unde se vor pune valorile singurei înregistrări determinată de instrucţiunea SELECT.
Fiecare coloană din select trebuie să aibă o variabilă asociată în listă, iar tipurile (coloana şi
variabila corespunzătoare) să coincidă ca tip de dată.
Dacă înstructiunea SELECT furnizează mai mult de o înregistrare, sau nu furnizează înregistrări, atunci se generează o eroare.
Exemplu:
--se foloseste tabelul creat astfel: CREATE GLOBAL TEMPORARY TABLE valori(a varchar2(200)); variable x char(200) DECLARE nr NUMBER := 0; sp CONSTANT CHAR(40) := ' '; s char(3) :='43'; BEGIN INSERT INTO valori select TRIM(nume) || ' ' || trim(prenume) || '-' || cnp FROM studenti WHERE sectia=s ORDER BY nume,prenume; select count(*) into nr from valori; :x := 'Nr.de studenti: ' || TO_CHAR(nr,'9999'); END; / SELECT * FROM valori; print x
execute immediate 'instructiune-sql';Exemplu:
begin execute immediate 'create table tabel(b char(1))'; end;
execute immediate 'bloc-PL/SQL';
execute immediate 'instructiune-sql' into lista_variabile;Exemplu:
var x number begin execute immediate 'select count(*) from studenti' into :x; end; / print x
execute immediate {'instructiune-sql | 'bloc_PL/SQL'} [into lista_variabile] using [in | out | in out] variabila [, [in | out | in out] variabila] ... ;Implicit parametrii sunt de intrare.
var n number declare n number:=0; tabel varchar2(10):='studenti'; sectia varchar2(3):='43'; begin --execute immediate 'select count(*) from ' || tabel into n; --da execute immediate 'select count(*) from studenti where sectia=:1' into n using sectia; :n:=n; end; / print n
execute immediate 'instructiune-sql' {returning | return} into lista_variabile; execute immediate 'instructiune-sql' bulk collect into variabila;