A konzolon látszódjon a dbms_output.put_line kimenete: set serveroutput on size 30000 1. Léterhozunk egy fájlt, és írunk bele valamit. Ezután kiolvassuk amit beleírtunk. CREATE OR REPLACE DIRECTORY SZOVEG AS 'C:/AB2'; DECLARE fajlKezelo UTL_FILE.FILE_TYPE; BEGIN fajlKezelo := UTL_FILE.FOPEN('SZOVEG', 'Fajl', 'w'); UTL_FILE.PUTF(fajlKezelo, 'Ez itt egy szoveg \n'); UTL_FILE.FCLOSE(fajlKezelo); EXCEPTION WHEN utl_file.invalid_path THEN raise_application_error(-20000, 'Rossz eleresi utvonal!'); END; DECLARE fajlKezelo UTL_FILE.FILE_TYPE; buf varchar2(4000); BEGIN fajlKezelo := UTL_FILE.FOPEN('SZOVEG', 'Fajl', 'r'); UTL_FILE.GET_LINE(fajlKezelo, buf); dbms_output.put_line('A beolvasott adat: ' || buf); UTL_FILE.FCLOSE(fajlKezelo); EXCEPTION WHEN utl_file.invalid_path THEN raise_application_error(-20000, 'Rossz eleresi utvonal!'); END; 2. Több sort írunk a fájlba, majd az kiolvassuk DECLARE fajlKezelo UTL_FILE.FILE_TYPE; BEGIN fajlKezelo := UTL_FILE.FOPEN('SZOVEG', 'Fajl', 'w'); IF UTL_FILE.IS_OPEN(fajlKezelo) THEN UTL_FILE.PUT_LINE(fajlKezelo, '1 sor'); UTL_FILE.PUT_LINE(fajlKezelo, '2 sor'); UTL_FILE.PUT_LINE(fajlKezelo, '3 sor'); UTL_FILE.PUT_LINE(fajlKezelo, '4 sor'); UTL_FILE.PUT_LINE(fajlKezelo, '5 sor'); UTL_FILE.PUT_LINE(fajlKezelo, '6 sor'); UTL_FILE.PUT_LINE(fajlKezelo, '7 sor'); UTL_FILE.PUT_LINE(fajlKezelo, '8 sor'); UTL_FILE.PUT_LINE(fajlKezelo, '9 sor'); UTL_FILE.FFLUSH(fajlKezelo); UTL_FILE.FCLOSE(fajlKezelo); END IF; END; DECLARE fajlKezelo UTL_FILE.FILE_TYPE; fajlVeg BOOLEAN; szoveg VARCHAR2(255); BEGIN fajlKezelo := UTL_FILE.FOPEN('SZOVEG', 'Fajl', 'r'); fajlVeg := false; WHILE NOT fajlVeg LOOP BEGIN UTL_FILE.GET_LINE(fajlKezelo,szoveg); DBMS_OUTPUT.PUT_LINE(szoveg); EXCEPTION WHEN NO_DATA_FOUND THEN fajlVeg := TRUE; END; END LOOP; END; 3. A létrehozott felhasználó tábla, azaz a (create table felhasznalo( id char(100) primary key, nev char(100), email char(100));) adatainak kiírása fájlba. DECLARE fajlKezelo UTL_FILE.FILE_TYPE; adatok VARCHAR2(1000); BEGIN fajlKezelo := UTL_FILE.FOPEN('SZOVEG', 'Fajl.csv', 'w'); FOR felhasznaloKurzor IN (SELECT * FROM felhasznalo) LOOP adatok := felhasznaloKurzor.id || ',' || felhasznaloKurzor.nev || ',' || felhasznaloKurzor.email; UTL_FILE.PUT_LINE(fajlKezelo,adatok); END LOOP; UTL_FILE.FCLOSE(fajlKezelo); END; -------------------------------------------------------------------------- 4. JOB ami rögtön elindul és óránként fut create or replace procedure KiirFelhasznalokSzama as db integer; begin select count(*) into db from felhasznalo; dbms_output.put_line('Felhasznalok szama: '||db); end; declare JobNo number; begin DBMS_JOB.SUBMIT(JobNo, 'KiirFelhasznalokSzama;', (SYSDATE+1/24), 'SYSDATE'); Commit; end; JOB-ok lekérdezése: select job, what from user_jobs; JOB eltávolítása: begin dbms_job.remove(1); end; ----------------------------------------------------------- 5. Job, ami következő egész órakor indul el trunc(sysdate+(1/24), 'HH') és fél percenként fut. 'sysdate + 30/86400' create or replace procedure ListazasFelhasznalok is cursor cur is select * from felhasznalo ; BEGIN FOR s IN cur LOOP dbms_output.put_line('Név: '||s.nev||' E-mail: '||s.email); END LOOP; END; declare JobNo number; begin DBMS_JOB.SUBMIT(JobNo, 'ListazasFelhasznalok;', trunc(sysdate+(1/24), 'HH'), 'sysdate + 30/86400'); Commit; end; --------------------------------------------------------- 6. JOB, ami a szabad autók számát kiírja hetente 'sysdate + 7' kiírja. create or replace procedure Szabadauto as db number; begin select count(*) into db from auto where kolcsonzott=1; dbms_output.put_line(db); end; declare JobNo number; begin DBMS_JOB.SUBMIT(JobNo, 'Szabadauto;', (sysdate), 'sysdate+7'); Commit; end; ---------------------------------------------------------- 7. Csomag, ami a szabad autókat kiíró tárolt eljárást tartalmazza. CREATE PACKAGE SzabadAuto_csomag AS PROCEDURE Szabadauto; END SzabadAuto_csomag; CREATE OR REPLACE PACKAGE BODY SzabadAuto_csomag AS procedure Szabadauto as db number; begin select count(*) into db from auto where kolcsonzott=1; dbms_output.put_line(db); end SzabadAuto; END SzabadAuto_csomag; begin SzabadAuto_csomag.Szabadauto; end; ----------------------------------------------------------- 8. Csomag, ami a felhasználók számát kiíró függvényt tartalmazza. CREATE PACKAGE FelhasznalokSzama_csomag AS function FelhasznalokSzama return number; END FelhasznalokSzama_csomag; CREATE OR REPLACE PACKAGE BODY FelhasznalokSzama_csomag AS function FelhasznalokSzama return number as db number; begin select count(*) into db from felhasznalo; return db; end FelhasznalokSzama; END FelhasznalokSzama_csomag; begin dbms_output.put_line(FelhasznalokSzama_csomag.FelhasznalokSzama); end;