Adatbázisok megvalósítása és üzemeltetése - Hajas Csilla gyak.
ELTE, 2007/2008. tanév I.(őszi) félév        3.évf. prog.inf.BSc/C
IP-cAMÜG  Csütörtök 14:00-tól 15:30-ig  D. 2.107 (PC2 labor)

I. Témakör: PL/SQL

_______________________________________________________
1. gyak. (IX.13)
 - PL/SQL  alapok, alprogramok

On-line help: PL/SQL User's Guide and Reference 10g
Segédanyagok: PL/SQL Technology Center (Oracle 11g PL/SQL)
Nikovits Tibor összefoglalója: Plsql.doc (jelszóval)

Feladatok az Oracle rendszer alaptábláival: dept, emp, salgrade táblák
- Írjuk át a jelszavunkat mind az oradb mind az ablinux csatlakozásnál
   lásd Adatbázisok elérése  és sqlplus parancsok sqlPlus.pdf   sqlplus.txt
- Hozzuk létre a dept, emp, salgrade táblákat a scott.dept (sila.dept), stb.
   táblákból: CREATE TABLE dept AS SELECT * FROM sila.dept; stb.

Ismétlő PL/SQL feladatok az előző félév alapján (házi feladatként)
- Hello World program (alap program, kiírás a képernyőre)
- Írjuk ki KING fizetését! (olvasás táblából változóba)
- Írjuk ki KING belépési dátumát és fizetését! (különböző dátum formátumok)
- Írjuk ki a dolgozók nevét és fizetését! (kurzor használata)
- Írjuk ki a 3. 5. és 8. legnagyobb fizetésű dolgozó nevét, fizetését!
  (kurzor attribútumok %ROWCOUNT)
- Tegyük be a dolgozók nevét egy plsql tömbbe, és írjuk ki az utolsó előtti sort!
  (összetett adattípusok RECORD/rekord TABLE OF/gyűjtőtábla v. plslq tömb)

1.gyakorlat órai mintapéldái: ELTE hallgatóknak (jelszóval)
1a_valtozok.sql - változóhasználat, vezérlési szerkezetek
 -   Írjunk egy PL/SQL blokkot tartalmazó SQL-Plus szkipt programot, amely
      a felhasználótól bekér egy egész számot! Ha ez a szám nagyobb 100-nál,
      akkor a PL/SQL blokkban, egyébként pedig a PL/SQL blokkot követő
      gazdanyelvi (SQL*Plus) környezetben írassa ki

1b_kurzor.sql - hivatkozási adattípusok,  kurzor
-    Növeljük meg a hivatalnokok (CLERK) fizetését a saját fizetésük 20%-ával!

1c_kurzor_tomb.sql - hivatkozási és összetett adattípusok,  kurzor
-    Előző példa, csak tömb (PL/SQL tábla) használatával.

1d_alprogr.sql - tárolt alprogramok
-    Egyszerű számnövelő példa a PL/SQL függvényekre és eljárásokra.

1.gyakorlat feladatai alprogramokra önálló feldolgozásra:
1e. - Írjunk meg egy fv-t, ami az empno azonosító alapján visszaadja a nevet!
1f. - Írjunk egy olyan függvényt, amely kurzor technikával egy EmpnoIn
       változóval megegyező dolgozó nevét betölti egy EnameOut változóba!
1g. - Módosítsuk a fizetéseket egy kurzorral végighaladva rajtuk!
        Adjunk hozzá mindenki fizetéséhez n*10 ezret, ahol n a nevében levő
        magánhangzók (vagyis a, e, i, o, u) száma!

_______________________________________________________
2. gyak. (IX.20)
 - PL/SQL kivételkezelés, triggerek

On-line help: PL/SQL User's Guide and Reference 10g
Segédanyagok: PL/SQL Technology Center (Oracle 11g PL/SQL)
Nikovits Tibor összefoglalója: Plsql.doc (jelszóval)

2.gyakorlat órai mintapéldái: ELTE hallgatóknak (jelszóval)
2a_hibakez.sql - hiba és kivételkezelés
-    Példa hiba és kivételkezelésre (módosítsuk úgy a programot, hogy
      másik ágra tereljük a hibakezelést...)

2b_kivetelkez.sql - kivételkezelés
-   Írjunk egy olyan eljárást, amely kivételkezelést is tartalmaz és a jutalmat
     az emp táblából létrehozott dolgozo tábla jutalék (comm) értékéhez
     adja hozzá! A jutalom a dolgozó fizetésének 10%-a, feltéve, ha a
     fizetés 3000 dollár alatt van, egyébként csak egy "Boldog Karácsonyt!"
     üdvözletet kap.

2c_trigger.sql - triggerek
-   Hozzunk létre BEFORE triggert, amely megakadályozza a munkaidőn
     kívüli adatmanipulációkat az emp táblán! Írassuk ki, milyen műveleteket
     kíséreltek meg végrehajtani munkaidőn kívül!

2d_triggerek.sql - triggerek
-  Írjunk triggert (és ellenőrizzük is a működését), amely megakadályozza
    az elnökre (president) vonatkozó törlő, beszúró és adatmódosító
    DML utasítások működését!
    (a tesztelő script programban a hivatkozási megszorítás felfüggesztése
     illetve a végén az újbóli engedélyeztetése)

2.gyakorlat feladatai kivételkezelésre és triggerekre önálló feldolgozásra:
2e. - Írjunk meg egy függvényt, ami n-re visszaadja n faktoriálist!
        Ha túl nagy szám lenne a faktoriális, adjon vissza -1-et,
        hiba és kivételkezeléssel megoldva.

2f. - Adjunk meg egy olyan triggert, amely törli a részlegen dolgozó
       összes dolgozó adatát az emp táblából miután töröltük a részleget
       a dept táblából! (a tesztelés előtt SAVEPOINT A; tesztelés után
       pedig állítsuk vissza az eredeti táblákat ROLLBACK A)

2g. - Írjunk triggert (ellenőrizzük is a működését), amely megakadályozza,
        hogy a felhasználó olyan dolgozót vigyen fel vagy töröljön ki vagy
        fizetésemeléssel módosítson, akinek a havi bére eléri vagy meghaladja
       a részlegének átlagfizetését! (kivételkezelés is)

_______________________________________________________
3. gyak. (IX.27)
 - PL/SQL csomagok, összefoglalás

On-line help: PL/SQL User's Guide and Reference 10g
Segédanyagok: PL/SQL Technology Center (Oracle 11g PL/SQL)
Nikovits Tibor összefoglalója: Plsql.doc (jelszóval)

stb...

Budapest, 2007. szeptember 10.
Utolsó módosítás: 2007. szept.18.

Lap tetejére        Gyak.oldalára      
dr. Hajas Csilla, ELTE IK
E-mail: sila@inf.elte.hu

Vissza a Kezdőlapra