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) || '-' || grupa 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;