PV003: Seminární skupiny - náplň výuky
7. Programování v Oracle - pokračování
Kurzory v PL/SQL
Řešení příkladu:
CREATE OR REPLACE PROCEDURE importuj_katalog IS CURSOR katcur IS select * from xdohnal.katalog; zaz katcur%ROWTYPE; CURSOR hledej(jm knihy.nazev%TYPE) IS select id from knihy where nazev = jm; kid knihy.id%TYPE; vydid integer; BEGIN OPEN katcur; LOOP FETCH katcur INTO zaz; EXIT WHEN katcur%NOTFOUND; OPEN hledej(zaz.nazev); FETCH hledej INTO kid; IF hledej%NOTFOUND THEN SELECT vydavatel_id INTO vydid FROM vydavatele WHERE vydavatel_jmeno = zaz.vydavatel; INSERT INTO knihy VALUES (seq_knihy_id.nextval, zaz.nazev, vydid, null, zaz.isbn); SELECT seq_knihy_id.currval INTO kid FROM dual; END IF; CLOSE hledej; INSERT INTO vytisky VALUES (seq_vytisky_id.nextval, kid, zaz.porizeno); END LOOP; CLOSE katcur; END;