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...