Skip navigation

SELECT ... INTO ...

Lekérdezés eredményének tárolása változókban

A lekérdezések során eddig mindig azt mondtuk, hogy az SQL nyelvben nem tároljuk a változókban az eredményeket, hacsak nem beágyazott SQL-ről volt szó.

A PL/SQL nyelvben van a SELECT utasításnak egy kiegészítése, amelynél egy-egy lekérdezett oszlop értékét változókban tudjuk tárolni.

Az utasítás a következő:

SELECT oszlop1, oszlop2, ..., oszlopN INTO v1, v2, ..., vN FROM ...

A fenti utasítás további része már megegyezik az ismert SQL SELECT utasításéval, eltérés az INTO kulcsszóban és az utána szereplő változólistában van. Itt oszlop1, ..., oszlopN az oszloplistát jelöi, v1, ..., vN pedig egy változólistát jelöl. Nagyon fontos, hogy ugyannyi változót soroljunk fel, amennyi oszlopot lekérdeztünk. Ha egy tábla minden oszlopát lekérdezzük, akkor a változó rekord típusú legyen.

Példa

CREATE TABLE T1(
    e INTEGER,
    f INTEGER
);

INSERT INTO T1 VALUES(1, 3);
INSERT INTO T1 VALUES(2, 4);

DECLARE
    a NUMBER;
    b NUMBER;
BEGIN
    SELECT e,f INTO a,b FROM T1 WHERE e>1;
    INSERT INTO T1 VALUES(b,a);
END;