9-10.gyak. PL/SQL-2 kurzorhasználat
   
-- III. témakör: Oracle PL/SQL 2.rész gépes gyakorlat
    (ez az előző heti Oracle PL/SQL alapok folytatása)
> 3.5. PL/SQL kurzor, explicit kurzor, for update záradék  
> 3.6. PL/SQL tárolt eljárások, függvények 
> 3.7. PL/SQL hiba- és kivételkezelés 
> [nem lesz a számonkérésben: 3.8. PL/SQL triggerek]
> PL/SQL FELADATOK-2.
   

SEGÉDANYAGOK: ZH-n is használható SQL, PL/SQL Ref.
A ZH-n a tűzfalon keresztül is elérhető és használható a dokumentáció:
http://medusa.inf.elte.hu/ tanszéki honlapon alul Oracle linken található
Online documentation for Oracle 11g R2 bal oldali menüből kiválasztva
a harmadik sorban  Database Administration és itt a harmadik dobozban:
SQL, PL/SQL, and PL/SQL Packages       
SQL Language Reference
SQL Language Quick Reference
PL/SQL Language Reference
PL/SQL Packages and Types Reference  
HTML   PDF
HTML   PDF
HTML   PDF
HTML   PDF   
     
További segédanyagok a PL/SQL-hez:
- Cinkóczki László, Oracle Junior, 2012. márc.8-i ea: PL/SQL
- Nikovits Tibor (ELTE) PL/SQL összefoglaló: NT_Plsql.htm
- Ullman/Chang (Standford) Using Oracle PL/SQL
- Ullman/Chang (Standford) Constraints and Triggers
- PL/SQL Technology Center (Oracle 11g PL/SQL)
   

3.5. Kurzor, explicit kurzor, for update záradék
-- Példák kurzor használatára: plsql_kurzor.sql (Nikovits Tibor)
-- PL/SQL Language Reference 11gR2 >> 6.fej. Static SQL/Cursors
Itt érdemes átnézni a PL/SQL Language Reference példáit, például
6.fejezet Static SQL/Cursors részben "FOR UPDATE"-re keresve
"Example 6-43" példa hasonló, mint az alábbi 3a_kurzor.sql feladat:
- Az Oracle dokumentációban szereplő példák kipróbálásához:
   >> Lekérdezésekhez: createHRsyn
   >> Módosításhoz: createHRtables
   
Gyakorló feladatok az Oracle Példatárból
--  Lásd Feladatok.pdf (9.fejezet feladatai)  -- Ehhez: cr_dept_emp.sql
     
3a_kurzor.sql - Kurzor, kurzorattribútumok (%FOUND, %NOTFOUND)
-    Növeljük meg a hivatalnokok (CLERK) fizetését a saját fizetésük 20%-ával!
      (hibas_mo.sql -> tanulságok leszűrése!)

3b_impl_kurzor.sql - Implicit kurzor, kurzorhasználat FOR ciklusban
-    Hozzuk létre a dolgozo táblát az emp táblából, és bővítsük azt egy sorszám
     oszloppal. Ezt töltsük fel 1-től kiindulva egyesével növekvő értékkel minden
     dolgozó esetén a dolgozók nevének ábécé sorrendje szerint.

3c_expl_kurzor.sql - Explicit kurzor
-    Előző 3b feladat másik megoldása

3d_current_of.sql - Explicit kurzor, FOR UPDATE, CURRENT OF 
-    Előző 3b, 3c feladat harmadik megoldása
      
További gyakorló feladatok: Lásd Példatár "9.fejezet.
Hivatkozási és összetett adattípusok, kurzor, ROWID" feladatai
   

3.6. PL/SQL tárolt eljárások, függvények és csomagok
   
-- Példák PL/SQL függvények és eljárások használatára plsql_proc_fv.sql
-- Példák csomag használatára: plsql_csomag.sql és plsql_package.sql (N.T.)
-- PL/SQL Language Reference 11gR2 >> 8.fej. PL/SQL Subprograms
-- PL/SQL Language Reference 11gR2 >> 10.fej. PL/SQL Packages
   
Gyakorló feladatok az Oracle Példatárból  -- Ehhez: cr_dept_emp.sql
Lásd Példatár "10.fejezet. Kivételkezelés, alprogramok, triggerek" feladatai
     
3.7. PL/SQL hiba- és kivételkezelés
   
-- Példák hiba- és kivételkezelésre:  plsql_exception.sql  (Nikovits Tibor)
-- PL/SQL Language Reference 11gR2 >> 11.fej. PL/SQL Error Hangling
    
Gyakorló feladatok az Oracle Példatárból  -- Ehhez: cr_dept_emp.sql
Lásd Példatár "10.fejezet. Kivételkezelés, alprogramok, triggerek" feladatai
   
5a_kivetelkez.sql - Feladat kivételkezelésre
-   Í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.
   

3.8. PL/SQL triggerek
     
-- Ez a rész csak a keddi csoportban van a 10. gyakorlaton.
-- PL/SQL Language Reference 11gR2 >> 9.fej. Triggers
   
Gyakorló feladatok az Oracle Példatárból  -- Ehhez: cr_dept_emp.sql
Lásd Példatár "10.fejezet. Kivételkezelés, alprogramok, triggerek" feladatai
   
6a_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!
     
6b_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)
        
PL/SQL FELADATOK-2  
      
-- Táblák és az eddigi sql feladatok: table_dolgozo.txt 
-- Ehhez a táblák létrehozása: create_dolgozo.txt

-- Az előző heti PL/SQL FELADATOK-1 folytatása 
    (aki azt még nem fejezte be, előbb azokat írja meg és utána ezeket).

5.) Írjuk ki a dolgozók nevét és fizetését!
     (több sort visszaadó lekérdezés, kurzor használata)
 
6.) Írjuk ki a 3. 5. és 8. legnagyobb fizetésű dolgozó nevét, fizetését!
     (kurzor attribútumok)
 
7.) Módosítsuk a dolgozók nevét írjuk át olyan formára, hogy
     a kezdőbetű nagybetű legyen a többi betű pedig kicsi és
     a fizetését is növeljük meg 2 %-kal.
     (mind a 3-féle kurzorhasználattal nézzük meg a működését,
      implicit kurzorral, explicit kurzorral és rejtett kurzorral is!)
 
8.) Írjuk ki azon dolgozók nevét és fizetését, akik fizetése nagyobb mint
     a felhasználó által megadott szám (a sz
 
9.) Í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)
     
10.) 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 száma (a, e, i, o, u)!
       (módosítás kurzorral, beépített függvények)

11.) Írjunk meg egy függvényt, ami az azonosító alapján visszaadja a nevet.
       Írjunk meg egy eljárást, ami az azonosító alapján egy OUT változóban
       visszaadja a nevet. (alprogramok, függvény és procedúra)
 
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. (UPDATE utasítással, nem plsql-ben) 
   
Fel a lap tetejére                          Vissza az AB1gyak oldalára (főmenü)