Adatbázisok - 7. gyakorlat, 1. feladatsor

Az adatbázis letölthető innen.

BETŰK
Helyes!

1. feladat

Készítsen tárolt eljárást ReszlegDolgozok néven, amely bemenő paraméterként egy részleg nevét (department_name) és egy fizetéshatárt (salary) kap, válaszként listázza az adott részleg határ felett kereső dolgozóinak vezetéknevét (last_name), fizetését és beosztás-azonosítóját (job_id), a fizetés szerint csökkenő sorrendben!
Hívja meg az eljárást a 'Sales' és 8000 értékkel! Írja be a felületre a lista második legkisebb fizetéséhez tartozó vezetéknevet!

A megoldás hibás! A megoldás helyes!

2. feladat

Módosítsa az előző tárolt eljárást úgy, hogy a lista után a megfelelő dolgozók létszámát is kiírja, Létszám: x fő. formában!
Hívja meg az eljárást a 'IT' és 3000 értékkel! Másolja be a felületre a lista után megjelenő eredményt!

A megoldás hibás! A megoldás helyes!

3. feladat

Készítsen egy logikai értéket visszaadó tárolt függvényt JoFizetes néven, amely egy dolgozó azonosítóját (employee_id) és egy új fizetést (salary) kap bemenő paraméterként, majd ellenőrzi, hogy a dolgozó beosztásához (job_id) megfelel-e az új fizetés a min_salary és max_salary mezők alapján!
Hívja meg a függvényt a SELECT JoFizetes(103, 11000) AS jo; paranccsal, és írja be a felületre a kapott választ!

A megoldás hibás! A megoldás helyes!

4. feladat

Készítsen tárolt eljárást FizetesModosit néven, amely szintén egy dolgozó azonosítóját (employee_id) és egy új fizetést (salary) kap bemenő paraméterként! Ha a dolgozónak lehet ennyi a fizetése (ezt a JoFizetes függvénnyel ellenőrizheti), akkor végezze el a módosítást, majd írja ki az eredményt a következő formában: Fizetés módosítva: XY – 75000 formában (XY helyett a dolgozó vezetékneve álljon)! Ha nem kaphat ennyi fizetést a dolgozó, akkor írja ki a Nem megfelelő fizetés! üzenetet!
Hívja meg az eljárást a 112 és 6900 értékekkel! Másolja be a felületre a megjelenő eredményt!

A megoldás hibás! A megoldás helyes!

6. feladat

Készítsen tárolt eljárást ReszlegLista néven, amely egy ország kódját kapja bemenőt adatként, válaszként pedig név szerint rendezett listát készít azoknak a részlegeknek a nevéről (department_name) és a telephely városnevéről (city), amelyek az adott országban találhatók! A lista után jelenjen meg az Összesen: x részleg. felirat is (x helyén a részlegek darabszámával)!
Hívja meg az eljárást US paraméterrel! Írja be az utolsó város nevét és a részlegek darabszámát | karakterrel elválasztva (pl. Detroit|25)!

A megoldás hibás! A megoldás helyes!

7. feladat

Készítsen triggert (eseményindítót) FizetesValtozas néven, amely az employees tábla update eseménye előtt fut le! A trigger hívja meg a JoFizetes függvényt, és ha az hamis értéket ad vissza, akkor az új fizetést állítsa be a módosítás előtti értékre!
Futtassa le az UPDATE employees SET salary = 3900 WHERE employee_id = 105; parancsot, majd írja be a felületre a 105-ös azonosítójú dolgozó fizetésének értékét!

A megoldás hibás! A megoldás helyes!

8. feladat

Készítsen triggert (eseményindítót) UjBeosztas néven, amely a jobs tábla insert eseménye előtt fut le! A trigger vizsgálja meg, hogy az alsó fizetéshatár (min_salary) ne legyen kisebb, mint az eddigi legkisebb alsó határ az összes beosztást figyelembe véve; ha kisebb lenne, akkor állítsa be annyira, mint a legkisebb érték! Ezután a triggel ellenőrizze, hogy a felső fizetéshatár (max_salary) legalább kétszer akkora-e, mint az alsó, és ha nem, akkor állítsa be az alsó határ kétszeresére!
Futtassa le az INSERT INTO jobs VALUES('W_MAN', 'Waste Manager', 1500, 2800); parancsot, majd írja be a felületre a beszúrt rekordból a max_salary értékét!

A megoldás hibás! A megoldás helyes!