ADATBÁZISOK-1 GYAKORLAT [prog.inf: IP-08AB1G]
  ELTE, 2015/2016-os tanév I.félévében [2015.szept.]
 
 
   
   Gyakorlatok: [1.] Kedd 8:30-10:00 PC1, [2.] Szerda 8:30-10:00 PC1
   A gyakorlat kötelező, katalógus van, legfeljebb 4 hiányzás lehetséges.
   Ellenőrzésre GYAK jelenléti ív (név-> 4kar-kód) hallgato/[jelszóval] .pdf
   A gyakorlat célja: az előadáson szereplő alapfogalmak, algoritmusok, és
   az adatbázisok-szemlélet gyakorlatban való elsajátítása. Az a cél, hogy
   a hallgatók minél hatékonyabban tudjanak SQL és PL/SQL feladatokat
   megoldani, hogy értsék is hogyan történik a lekérdezések kiértékelése.
   
   Gyakorlatok anyaga: >> 1.GY >> 2.GY >> 3.GY >> 4.GY >> 5.GY >> 6.GY >>
    >> I.ZH/7.GY >> 8.GY >> 9.GY >> 10.GY >> 11.GY >> 12.GY >> II.ZH/13.GY
   
   Dolgozatok időpontja: I.ZH/7.GY: 2015.okt.20-21, II.ZH/13.GY: dec.8-9.
   -- Figyelem! okt.21-én és dec.9-én szerdai gyakorlati csoport ZH-it:
   -- Déli Tömb 0-411-es teremben írjuk (földszint Déli Tömb Arénánál).
   Eredmények: (név-nélkül 4kar-kóddal) elérése hallgato/[jelszóval] .pdf 
   +EA jelenléti ív/gyak.csop: .pdf és EA röpzh-ák pontjai/gyak.csop: .pdf 
   
   Pót/javZH: az egyik és csak az egyik ZH-t lehet pótolni vagy javítani
   -- 2015. dec.18.P. 10h vagy dec.21.H. 10h (0-818. Soó Rezső terem) 
   Gyak.j.UV: dec.18.P. 10h (0-818.terem) vagy jan.5.K. 12h (0-823.terem)
  
   A gyakorlatok gépes részéhez: Oracle adatbázisok elérése, SQL developer
   Oracle Példatár feladatai: Feladatok.pdf  (SQL: 1-6.fej., PL/SQL: 8-10.fej.)
    -- Példatár feladataihoz scriptek: createEmpDept(en) vagy createDolg(hu)
   Tankönyv feladatai: Termékek-feladatok.pdfCsatahajók-feladatok.pdf
    -- Tankönyv feladataihoz a scriptek: createTermékekcreateCsatahajók
    
   Oracle SQL segédanyagok: ebben az eduSQL mappában
    -- lekérdezésekhez a scriptek: createHRsyn (elég szinonimákat használni)
    -- később, DML-utasításokhoz: createHRtables (itt saját tábláink legyenek)
   Oracle PL/SQL segédanyagok: ebben az eduPLSQL mappában  
    -- itt a plsql_ fájlok forrása: innen  -- és a PL/SQL könyvhöz a scriptek: itt
    -- Tankönyvtár: PL/SQL programozás Oracle 10g-ben (Gábor A.-Juhász I.)
   Oracle 11gR2 Online Docu: -- Tanszéki szerveren  -- Oracle oldalán --
    -- SQL Language Reference: HTML  PDF (2009.10)  HTML  PDF (2014.07)
    -- PL/SQL Language Refer.:  HTML  PDF (2010.03)  HTML  PDF (2014.12)
    
   1.GY: 2015.09.08-09.   --- SQL előkészítés: create table, insert utasítás 
   > Ismerkedés, Oracle adatbázisok elérése, SQL Developer használata
   > SQL DDL: relációséma, adattípusok, megszorítások: create table
   > SQL DML: relációelőfordulás, táblák feltöltése adatsorokkal: insert 
   > Oracle PéldákOracle segédanyagok eduSQL mappa (ehhez: createHRsyn)
      Bevezetés (HR séma táblái), Sample Schemas: Fig.4-1 HR és OE sémák
   > További példák: Az OracleDoc Data Types fejezetének a segítségével
      (vagy az ebből kivett oszloptípusok segédlettel) hozzunk létre táblákat.
   > Example 2-1 CREATE TABLE utasítás alapján hozzunk létre saját táblát:
      DROP TABLE MY_EMPLOYEES;  CREATE TABLE MY_EMPLOYEES (...);
   > Oracle PéldatárFeladatok.pdf (ehhez: createEmp vagy createDolg)
   > További táblák, demo táblák létrehozása és feltöltése adatokkal
    
   2.GY: 2015.09.15-16.   --- Rel.alg. és SELECT: egy tábla lekérdezése 
   > Relációs algebra unér műveletei (vetítés, kiválasztás, átnevezés)
   > Vetítés és kiválasztás kiterjesztése, kifejezések, sorfüggvények
   > SELECT utasítás SELECT, WHERE és ORDER BY záradékai
   > Oracle Példák: -- lekérdezésekhez elég szinonimákat venni: createHRsyn 
      >> 1/1.lecke (vetítés kiterjesztése, kifejezések),
      >> 1/2.lecke (kiválasztás, kiválasztott sorok rendezése),
      >> 1/3.lecke (sorfüggvények használata a SELECT és WHERE záradékban)
   > Feladatok: Oracle Példatár Feladatok.pdf 1.fejezet 1.1-1.20 feladatok
      Megj.: 1.14.feladatban foglalkozás szerint rendezve (nem csoportosítva)
   > HF: befejezni az Oracle Példatár 1.1-1.20 feladatokat! 
    
   3.GY: 2015.09.22-23.   --- SELECT: kifejezések, összesítés, csoportosítás 
   > I.rész: előző heti HF: Példatár 1.1-1.20 feladatok, sorfüggvények
   > További példák, see Examples:  SQL Language Reference >> 5 Functions:
      Sorfüggvények: pl. Karakteres függvények: SUBSTRRPAD, ...,  INSTR, ...
      pl. Dátum függvények: MONTHS_BETWEEN, ..., pl. Konverziós: TO_DATE, ...
      pl. Null érték kezelése, helyettesítő érték megadása: NVL, COALESTE, ...
             Figyelem! COALESTE példában: FROM product_information
             mivel ez a tábla nem az HR, hanem OE sémában szerepel, ezért
             itt ki kell írni a táblatulajdonost: FROM OE.product_information
             (ugyanis csak a HR owner tábláihoz hoztuk létre a szinonimákat).
   
   > II.rész: Kiterjesztett relációs algebra egy relációra vonatkozó műveletei:
       kiterjesztett vetítés, ismétlődő sorok megszüntetése, összesítések,
       csoportosítási művelet, rendezési művelet (binár műveletek később)
   > Egy táblára vonatkozó lekérdezések kifejezése SQL-ben SELECT utasítás
      SELECT, FROM, WHERE, GROUP BY, HAVING és ORDER BY záradékai
   > Oracle Példák: -- lekérdezésekhez elég szinonimákat venni: createHRsyn 
       >> 1/4.lecke (csoportosítás, group by és having záradékok)
        
   > Feladatok: Oracle Példatár Feladatok.pdf 2.fejezet 2.1-2.24 feladatok
   > HF: befejezni az Oracle Példatár 2.1-2.24 feladatokat! 
         
   4.GY: 2015.09.29-30.   --- SELECT: több táblára vonatkozó lekérdezések  
   > Előző heti HF: Példatár 2.1-2.24: egy táblára vonatkozó lekérdezések
   > Új anyag: Több táblára vonatkozó lekérdezések, összekapcsolások
   > Oracle Példák: -- lekérdezésekhez elég szinonimákat venni: createHRsyn 
      >> 1/5.lecke (összekapcsolások, a külső join is)  
      >> 1/7.lecke  (halmaz- és multihalmaz műveletek)
   > További példák: Példák összekapcsolásokra és outer join-okra
   > Egy feladat kétoldali külső összekapcsolásra: Adjuk meg osztályonként
      a dolgozók összfizetését (department_name, sum(salary)) formában
      a hr.employees és hr.departments táblák adatai alapján, amelyekre
      1. Azok az osztályok is jelenjenek meg ahol nem dolgozik senki,
          ott az összfizetés 0 legyen.
      2. Ha van olyan dolgozó, akinek nincs osztálya, azokat egy 'FIKTIV' nevű
         osztályon gyűjtsük össze.
      3. Csak azokat az osztályokat írjuk ki, amelyek nevében van 'B' betű,
          plusz a FIKTIV osztályt.
          --- Megoldás/ellenőrzésként: lásd itt
   
   > Feladatok: Oracle Példatár Feladatok.pdf 3.fejezet 3.1-3.12 feladatok
      Ma csak az  összekapcsolásokat nézzük meg, alkérdések a köv.héten!
   > HF: Oracle Példatár 3.1-3.12 feladatok: több tábla összekapcsolása! 
         
   5.GY: 2015.10.06-07.   --- Rel.alg. és SELECT: több táblás lekérdezések 
   > Előző heti HF: Példatár 3.fejezet: Több táblára vonatkozó lekérdezések
   > Oracle Példák: -- lekérdezésekhez elég szinonimákat venni: createHRsyn
      >> 1/6.lecke és  2/6.lecke (alkérdések)
    
   > Áttekintés: Tk.2.4.14.Feladatok (Tk.54-57.o. 2.4.1. és 2.4.2.feladatok)
      relációs algebrai kifejezésekkel, kifejezőfákkal és átírva SQL lekérdezésekre
   > Tankönyv feladatai: Termékek-feladatok.pdfCsatahajók-feladatok.pdf  
   > Tankönyv feladataihoz a scriptek: create Termékekcreate Csatahajók
      Lekérdezések kifejezése először (papíron) természetes módon táblákkal,
      a táblákon értelmezett műveletekkel gondolkodva, és relációs algebrában  
      kifejezőfákkal is felrajzolva, majd átírva SQL SELECT utasítással (gépnél)
      többféle átírást, megoldási lehetőséget vizsgáljunk meg, vessünk össze!
      --- mivel az előadáson volt: Termékek-feladatok-megoldása.pdf (EA-on!)
      --- ezért a gyakorlaton a Csatahajók-feladatok.pdf feladatokat nézzük! 
   
   > Feladatok: Oracle Példatár Feladatok.pdf 3.fejezet feladatai
      Összekapcsolások és alkérdések használatával többféle módon oldjuk meg
   > HF: Oracle Példatár 3.fejezet feladatai: az alkérdések használata is!
      
   6.GY: 2015.10.13-14.   --- Rel.alg.-> Datalog és SELECT: lekérdezések 
   > I.ZH előtti összefoglalás, konzultáció, kérdés/válasz
   > 1-6.előadások anyaga: Tankönyv 1., 2., 5. és 6.fejezetei konzultáció
   > Oracle Példatár 1-2-3.fejezet feladataiból konzultáció: kérdés/válasz
   
   > Tankönyv feladatai: Termékek-feladatok.pdfCsatahajók-feladatok.pdf
      A múlt heti relációs algebrai kifejezőfákat írjuk át Datalog szabályokra is
      >>> Segédanyag: Rel.alg.kif.-> Datalog átírás.pdf
   
   > Feladatok: Oracle Példatár Feladatok.pdf 3.fejezet feladatai
   > HF: befejezni az Oracle Példatár 3.fejezet feladatait! Köv.héten I.ZH!
      
   7.GY: 2015.10.20-21.   --- I.ZH: Lekérdezések (rel.algebra, datalog, SQL) 
   > I.ZH témaköre:
      > 1-6.előadások anyaga: Tankönyv 1.fej. Alapok, 2.fej.Relációs algebra,
         5.fej.Kit.rel.algebra, Datalog, 6.1-6.4 SQL SELECT utasítás, 6.5. DML
      > 1-6.gyakorlatok anyaga és az Oracle Példatár 1-3.fejezet feladatai
   
   -- Figyelem! okt.21-én és dec.9-én szerdai gyakorlati csoport ZH-it:
   -- Déli Tömb 0-411-es teremben írjuk (földszint Déli Tömb Arénánál).
    
   -- -- o ~ o ~ o~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o -- --
   -- --    Őszi szünet : 2015. október 26-tól (hétfő) - október 30-ig (péntek)    -- --
   -- -- o ~ o ~ o~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o -- --
     
   8.GY: 2015.11.03-04.   --- SQL DML-utasítások. Rekurzió az SQL-ben   
   > I.rész: SQL DML-utasítások: INSERT, DELETE és UPDATE utasítások
   > Segédlet:  5ea_SQL DML -- Tk. 6.5. Táblák tartalmának módosítása
   > Oracle Példák: -- DML-utasításokhoz saját táblák létrehozása: createHRtables 
      >> 1/8.lecke  SQL DML-utasítások (insert, update, delete) és a tranzakciók
   > Feladatok: DML_feladatok.txt  --- ehhez itt: createDolg (no constraint)
   > HF: Oracle Példatár 5.fejezet: DML-utasítások (köv.hét: DDL-utasítások)
     
   > II.rész: Rekurzió. Az Eljut-feladat. --- Ehhez: create_jaratok_tabla.txt
   > Segédlet: 7.előadás.pdf -- Tk.10.2. Az Eljut-feladat. Rekurzió az SQL-ben
   > Oracle Példák:
       >> 2/6.lecke (WITH záradék -- alkérdések után 16-18.o.)
       >> 2/7.lecke Hierarchikus lekérdezések -- hiera_lekerd.txt
   > További példák az Oracle SQL Lang.Ref.11.2.pdf dokumentációban:
      -- Hierarchikus lekérdezések: Chapter 9 - SQL Queries and Subqueries
          innen Hierarchical Queries 9-3 és Hierarchical Query Examples  9-5
      -- Rekurzió with-utasítással: itt 19-36 Subquery Factoring: Example
   
   9.GY: 2015.11.10-11.   --- Modellezés és SQL DDL (táblák, nézettáblák) 
   > I.rész: Relációs modellezés, lásd 08.előadás.pdf 
   > Feladatok:
      (1) Tk.4.1.-4.4. Az egyed-kapcsolat (E/K) modell elemei
            E/K diagramok felrajzolása: Modellezési feladatok - E/K diagram
      (2) Tk.4.5.-4.6. E/K diagram átírása relációs modellé  
            E/K-diagr. átírása relációkká: EKpelda.pdfE/K_pl1.pdf és E/K_pl2.pdf    
     
   > II.rész: SQL DDL-utasítások: CREATE, [ALTER], DROP -> TABLE, VIEW
   > Segédlet: 09.előadás.pdf -- Tk. 7. és 8. fejezetei SQL DDL utasítások
   > Oracle Példák (Megj.: innen az indexek létrehozása később AB2GY-on lesz)
       >> 1/9.lecke  SQL DDL (táblák és megszorítások létrehozása)
       >> 1/10.lecke  SQL DDL (innen: csak a nézettáblák létrehozása kell)
       >>  2/1.lecke  SQL DDL (innen: csak a megszorítások létrehozása kell)
   > Feladatok: Táblák és megszorítások (constraints), nézettáblák létrehozása.
      Adatok karbantartása adattáblán illetve nézeten keresztül, és megfigyelni
      ezek egymásra hatását: Hogyan hat a nézetek adatainak módosítása az
      adattáblára, és az adatok módosítása hogyan jelenik meg a nézettáblában?
   > További segédletek: create table, típusok, megszorításoknezettáblák (.txt)
   > HF: Oracle Példatár 5. és 6.fejezet feladatai: DDL-utasítások
    
   10.GY: 2015.11.17-18.   --- PL/SQL: blokk, deklaráció, utasítások, select into 
   > Oracle PL/SQL, ehhez Oracle 11gR2 doc PL/SQL Language Reference
      -- Az Oracle doksikban szereplő példák kipróbálásához: createHRtables
 
   > I.rész: PL/SQL blokk szerkezete, változóhasználat >> 2.fej. Alapok
      [1_deklarációs_rész] 2_végrehajtható_rész [3_kivételkezelő_rész]
      >> példa-2-24 deklarációk-és-értékadás
      >> példa-2-25 select-into (itt a 2-25 példában blokk: begin ... end; /
            át kell tenni az end;-et a végére!) SELECT INTO-t akkor használjuk,
            ha a lekérdezés pontosan egy sort ad, ha a lekérdezés több sorral
            tér vissza, akkor  kurzort kell használni, lásd köv.gyakorlat anyagát).

      >> (összefoglaló) plsql_02_tipusok.pdf,  03_sql_dml.pdf05_valtozok.pdf
   
   > PL/SQL feladatok: --- ehhez, mint a DML-hez volt: createDolg (no constraint)
     -- A PL/SQL blokk előtt minden alkalommal állítsuk be: SET SERVEROUTPUT ON
     1.) Az első feladat: Írjuk ki PL/SQL blokkból: 'Szia Világ!', majd egészítsük ki,
          kérjen be egy nevet, számot, dátumot és ezeket is írassuk ki a programból!
     2.) Írjuk ki KING fizetését (olvasás táblából változóba), abban az esetben,
           ha ismert, hogy pontosan egy KING nevű dolgozó szerepel a táblában! 
   
   > II.rész: Vezérlési szerkezetek a PL/SQL-ben 4.fej. Control Statements
      >> példa-4-5 if-then-elsif utasítás,
      >> példa-4-6 egyszerű case utasítás, és itt írjuk át grade := 'B' -> '&B'
            helyettesítési változóra, aminek a felhasználó adja meg az értékét!
      >> példa-4-10 alap LOOP ciklus utasítás EXIT WHEN kilépés a ciklusból
      >> példa 4-14 FOR ciklus utasítás
      >> példa 4-27 WHILE ciklus utasítás
      >> (összefoglaló) plsql_01_bevezetes.pdfpl02_vezerlo_utasitasok.txt
    
   > III.rész: Az "Eljut feladat" megvalósítása PL/SQL-ben
     -- Az Eljut-feladat a Tankönyv (Ullman-Widom kék könyv) 10.2 szakaszára épül
     -- Adott Jaratok(legitarsasag, honnan, hova, koltseg, indulas, erkezes) táblában
        repülőjáratok adatait tároljuk (honnan-hova várospárok). Azt keressük, hogy
        Dallasból mely városokba tudunk eljutni (közvetlenül vagy egy/több átszállással). 
     -- Ezzel a scripttel jaratok_tabla.txt készítsünk saját táblát, ami alapján dolgozunk.
   
   > Rek1.feladat: Mely (x, y) várospárokra lehetséges egy vagy több átszállással
      eljutni x városból y városba? -- Ehhez készítsünk egy Eljut(honnan, hova) táblát, 
      a sorait a járatok tábla alapján PL/SQL programmal töltsük fel (ciklust szervezni, 
      az insert 2.alakja: több sor felvitele alkérdéssel/járatok és eljut táblák alapján).
      >>> (csak ha kell, egy kis segítség, további ötletek és a megoldás vázlata: itt)

   > Rek2.feladat: Mely (x,y) város párokra hány átszállással és milyen költségekkel
      lehetséges egy vagy több átszállással eljutni x városból y városba? -- Ehhez is
      készítsünk Eljut2(honnan, hova, atszallas, koltseg) táblát, a sorait programmal.
    >> Papíron megoldandó feladat: Fejezzük ki az SQL-1999-es szabvány SELECT
         WITH RECURSIVE utasítással, hogy mely mely városokba (hova) tudunk eljutni
         'DAL' (Dallas)-ból legfeljebb 3 átszállással és legfeljebb 5000 költségből.
          >>> (csak ha kell, egy kis segítség WITH RECURSIVE papíros részéhez itt)
      
   > Rek3.feladat: Tegyük fel, hogy nemcsak az érdekel, hogy el tudunk-e jutni az
      egyik városból a másikba, hanem az is, hogy utazásunk során az átszállások is
      ésszerűek legyenek, ez azt jelenti, hogy ha több járattal utazunk, akkor nézni
      kell átszálláskor az érkező járatnak legalább egy órával a rákövetkező indulás
      előtt meg kell érkeznie. (Tegyük fel, hogy nincs egy napnál hosszabb utazás!)
     
   > Rek4.feladat: A fenti feladatokat oldjuk meg PL/SQL-ben úgy is, hogy ne csak
      a várospárokat, hanem a teljes útvonalat is listázzuk ki.
   
   > Gyakorló feladatok az Oracle Példatárból
   > Feladatok: Oracle Példatár Feladatok.pdf 8.fejezet 8.1-8.9.feladatok +Eljut-feladat
   > HF: Oracle Példatár 8.fejezet feladatai: Változóhasználat, utasítások PL/SQL-ben
   
   
   11.GY: 2015.11.24-25.   --- PL/SQL: lekérdezések, kurzorok használata 
   > Oracle PL/SQL, ehhez Oracle 11gR2 doc PL/SQL Language Reference
      -- Az Oracle doksikban szereplő példák kipróbálásához: createHRtables
     
      DML utasítások a PL/SQL-ben, kurzorok >> 6.fej. Static SQL/Cursors
      >> példa6-1 DML utasítások a programban, implicit kurzor
      >> példa-6-4 implicit kurzor attribútumok,
      >> példa-6-7 explicit kurzorok deklarálása és használata, lásd 5.feladat,
      >> példa-6-11-től 6-14 explicit kurzor attribútumok, lásd 6.feladat,
      >> példa-6-17 paraméteres kurzorok, lásd 7-8.feladat, 
      >> példa-6-43 for update kurzor módosításhoz, lásd 9-10.feladat.
      >> (összefoglaló) (volt:03_sql_dml.pdf), 13_kurzorok.pdf, pl03_cursor.txt 
       
   > PL/SQL feladatok: --- ehhez, mint a DML-hez volt: createDolg (no constraint)
     -- A PL/SQL blokk előtt minden alkalommal állítsuk be: SET SERVEROUTPUT ON
     1-2.) Lásd az előző heti gyakorlaton az első PL/SQL feladatokat! 
     3-4.) Lásd az Eljut-feladat megvalósítását PL/SQL programmal: Rek1 és Rek2.
     5.) Írjuk ki a dolgozók nevét és fizetését!
          -- több sort visszaadó lekérdezés, kurzor használata, lásd  példa-6-7 
     6.) Írjuk ki a 3. 5. és 8. legnagyobb fizetésű dolgozó nevét, fizetését!
          -- kurzor attribútumok, lásd példa-6-14 
     7.) Írjuk ki azon dolgozók nevét és fizetését, akik fizetése nagyobb mint 
          egy olyan szám, amelyet a felhasználó fog majd futás közben megadni!
          -- felhasználói/helyettesítő változók: &numerikus_valt, '&karakteres_valt'
     8.) Írjuk ki azon dolgozók nevét, fizetését és osztálykódját, akik a felhasználó
          által megadott osztályon dolgoznak! A felhasználó által megadott betű
          legyen A, R, S (Accounting ...) a 10, 20, 30-as osztály esetén.
          -- paraméteres kurzor, lásd példa-6-17 
     9.) Növeljük meg a hivatalnokok (CLERK) fizetését a saját fizetésük 20%-ával!
          -- for update kurzor módosításhoz, lásd ugyanez a feladat: példa-6-43 
   10.) Módosítsuk a dolgozók nevét írjuk át, hogy csak a kezdőbetű legyen nagy,
          a többi betű kicsi, továbbá a dolgozók fizetését is növeljük meg 2 %-kal!
          -- for update kurzor módosításhoz, lásd példa-6-43 
   
   > Gyakorló feladatok az Oracle Példatárból
   > Feladatok: Oracle Példatár Feladatok.pdf 9.fejezet 9.1-9.14.feladatok 
   > HF: Oracle Példatár 9.fejezet feladatai: Lekérdezések, kurzorok a PL/SQL-ben
          
   12.GY: 2015.12.01-02.   --- PL/SQL: tárolt eljárások/függvények, kivételkezelés 
   > II.ZH előtti összefoglalás:
      > Oracle Példatár 4-10.fejezet feladataiból konzultáció, kérdés/válasz
      > 5-9.előadások és 8-12.gyakorlatok anyagából konzultáció, kérdés/válasz
      > röpzh3 témaköre, például: A csoport, B csoport továbbá PL/SQL feladatok
       
   > PL/SQL eljárások és függvények >> 8.fej. PL/SQL Subprograms
      >> példa2-19 Alprogramok (már itt is volt: 2.fej. Alapok)
      >> példa4-1 IF-THEN utasítás (már itt is volt: 4.fej. Utasítások)
      >> (összefoglaló) plsql_06_alprogramok.pdf, pl06_procedura_fv.txt
   > PL/SQL kivétel- és hibakezelés >> 11.fej. PL/SQL Error Handling
      >> példa-11-5 és tábla-11-2 előre definiált kivételek
      >> példa-11-8 felhasználó által definiált kivételek
      >> (összefoglaló) plsql_07_kivetelek.pdf, pl05_exception.txt
   > (összefoglalásként) plsql_13_kurzorok.pdf
   
   > PL/SQL feladatok: --- ehhez, mint a DML-hez volt: createDolg (no constraint)
     -- A PL/SQL blokk előtt minden alkalommal állítsuk be: SET SERVEROUTPUT ON
     1-10.) Lásd az előző heti gyakorlaton az első PL/SQL feladatokat: ezeket most
          írjuk át eljárásokra/függvényekre, plusz legyen benne hiba- és kivételkezelés! 
     2.) Írjuk ki KING fizetését (olvasás táblából változóba és a képernyőre való kiíratás)
          abban az esetben,  ha pontosan egy KING nevű dolgozó szerepel a táblában, 
          viszont ha nincs ilyen nevű dolgozó vagy több ilyen is van, akkor azt írjuk ki!
           -- Előre definiált kivételek: NO_DATA_FOUND, TOO_MANY_ROWS, lásd példa-11-5
     (...) -- Előre definiált és felhasználói kivételek. Alprogramok (függvények, eljárások)
     11.) a.) Írjunk meg egy függvényt, ami az azonosító alapján visszaadja a nevet!
            b.) Írjunk meg egy eljárást, ami az azonosító alapján egy OUT változóban
            visszaadja a nevet! (alprogramok: függvények és eljárások/procedúrák)
     12.) Írjunk meg egy függvényt, ami visszaadja a paraméterében levő magánhangzók
            számát. Majd módosítsuk a fizetéseket ennek a függvénynek a segítségével.
            (itt most a módosítást az UPDATE utasítással végezzük, és nem plsql-ben)
     
   > Gyakorló feladatok az Oracle Példatárból
   > Feladatok: Oracle Példatár Feladatok.pdf 10.fejezet feladatai
   > HF: befejezni az Oracle Példatár 10.fejezet feladatait! Köv.héten II.ZH!
    
   13.GY: 2015.12.08-09.   --- II.ZH: SQL DDL és DML utasítások, PL/SQL 
     > II.ZH témaköre:
        > 5-9.előadások anyaga: Tankönyv 4.1.-4.6. E/K diagram átírása relációkra,
           6.5. DML, 7-8.fej.DDL, 
9.3-9.4.SQL/PSM (PL/SQL), 10.2.Rekurzió (WITH) 
        > 8-12.gyakorlatok anyaga és az Oracle Példatár 4-10.fejezet feladatai
   -- Figyelem! dec.9-én szerdai gyak. II.ZH-t: Déli Tömb 0-411-es teremben írjuk