Az Oracle SQL 9. - PowerPoint PPT Presentation

1 / 36
About This Presentation
Title:

Az Oracle SQL 9.

Description:

Az Oracle SQL 9. Triggerek s t rolt elj r sok. Kliens oldali programok. A r di telefonokat k rem KIKAPCSOLNI! Triggerek A trigger Speci lis programblokk ... – PowerPoint PPT presentation

Number of Views:148
Avg rating:3.0/5.0
Slides: 37
Provided by: Marko
Category:
Tags: sql | oracle | trigger

less

Transcript and Presenter's Notes

Title: Az Oracle SQL 9.


1
Az Oracle SQL 9.
  • Triggerek és tárolt eljárások.
  • Kliens oldali programok.

2
A rádiótelefonokat kérem KIKAPCSOLNI!
3
Triggerek
4
A trigger
  • Speciális programblokk (eljárás)
  • Egy táblához vagy nézettáblához kapcsolódik
  • Adatbázis-események hatására hajtódik végre
  • nem lehet meghívni, mint a normál eljárásokat
  • PL/SQL nyelven íródik
  • az újabb Oracle-verziók a Java és a C használatát
    is támogatják
  • Az adatbázisban tároljuk
  • a C-ben írt eljárások nem az adatbázisban vannak

5
A triggereket kiváltó események
  • DML-utasítások
  • INSERT, UPDATE, DELETE
  • DDL-utasítások
  • CREATE, ALTER, DROP
  • Rendszer-események
  • az adatbázis elindítása, leállítása, hibák
  • Felhasználói események
  • bejelentkezés, kijelentkezés

6
A triggerek fo alkalmazási lehetoségei
  • Bonyolult, kényszerekben nem leírható
    adat-ellenorzések
  • Származtatott oszlopok értékének kiszámítása
  • Naplózás
  • Statisztikák gyujtése a táblák elérésérol
  • Nézettáblákon keresztül történo adatmódosítások
    megvalósítása

7
Trigger létrehozása / módosítása
  • DML-utasításhoz kapcsolódó triggernél az utasítás
    alapformájaCREATE OR REPLACE TRIGGER
    triggernévBEFORE AFTER INSTEAD OFINSERT
    OR UPDATE OR DELETE ON táblanév
    nézetnév FOR EACH ROWDECLARE deklarációkBEG
    IN utasításokEND

milyen eseményre induljon
a végrehajtandó tevékenység eloírása
8
BEFORE / AFTER / INSTEAD OF
  • Megadja, hogy a trigger a kiváltó esemény elott,
    után vagy helyette fusson le
  • BEFORE és AFTER csak táblákra használható
  • használatuk csak néhány apróságban különbözik
  • INSTEAD OF csak nézettáblákra (view) használható

9
old és new
  • A mezok módosítás elotti és új értékét is el
    lehet érni
  • INSERT esetén a régi érték (old) NULL
  • DELETE esetén az új érték (new) NULL
  • BEFORE triggerekben az új érték (new) át is
    írható, pl.
  • IF new.egysegar lt 100 THEN new.egysegar
    100 -- túl olcsó lenne!END IF

10
1. példa triggerre
  • CREATE OR REPLACE TRIGGER arvaltozas_kiirasaBEFOR
    E DELETE OR INSERT OR UPDATE ON cikk FOR EACH
    ROWDECLARE ardiff number BEGIN ardiff
    new.egysegar - old.egysegar dbms_output.put(n
    ew.cikknev) dbms_output.put(Régi ár '
    old.egysegar) dbms_output.put(' Új ár '
    new.egysegar) dbms_output.put_line('
    Növekedés ' ardiff) END /

minden adatmódosító utasításnál elindul
a CIKK tábla minden megváltozott sorára
kiírja a képernyore a cikk nevét, régi és új
árát és a két ár eltérését
SQLPlusban szükséges a végrehajtatáshoz
11
A DBMS_OUTPUT csomag üzeneteinek megjelenítése
  • Az üzenetek kliens oldali megjelenítéséhez
    SQLPlusban aSET SERVEROUTPUT ON SIZE
    1000000utasítást ki kell elotte adni!

12
2. példa triggerre
  • CREATE OR REPLACE TRIGGER eleg_idosBEFORE INSERT
    OR UPDATE ON hallgato FOR EACH ROWDECLARE
    szul_ev NUMBER(4) folyo_ev NUMBER(4)BEGIN
    szul_ev TO_NUMBER( TO_CHAR(new.szul_dat,
    YYYY)) folyo_ev TO_NUMBER(
    TO_CHAR(SYSDATE, YYYY)) IF szul_ev
    new.evfolyam 17 gt folyo_ev THEN
    RAISE_APPLICATION_ERROR (-20101, Túl
    fiatal ahhoz, hogy new.evfolyam . éves
    legyen!) END IFEND /

adatbevitel / módosítás hatására indul el
a HALLGATO tábla minden megváltozott sorára
legkorábban 18 éves korában lehet 1. éves, 19
éves korában 2. éves, stb.
SQLPlusban szükséges a végrehajtatáshoz
13
A triggereink adatainak megnézése
  • Az alábbi táblában találunk információkat
  • USER_TRIGGERS
  • ALL_TRIGGERS
  • DBA_TRIGGERS

14
Trigger törlése
  • AlakjaDROP TRIGGER triggernév
  • PéldaDROP TRIGGER arvaltozas_kiirasa

15
és hol az ALTER TRIGGER?
  • Van ilyen utasítás is
  • Nem a trigger tevékenységének megváltoztatására
    szolgál
  • Csak engedélyezni / letiltani / újra fordítani
    lehet vele a meglévo triggert

16
1. feladat
  • Trigger készítése, amely a VEVOK tábla módosítása
    (UPDATE) esetén egy VEVO_NAPLO nevu táblába
    beírja
  • minden módosított vevo (régi) kódját,
  • a módosítás idejét
  • és a módosítást végrehajtó felhasználó
    login-nevét
  • Figyelem! A VEVO_NAPLO táblát is létre kell hozni!

17
Megoldás - a tábla
  • CREATE TABLE vevo_naplo( vevokod VARCHAR2(8),
    modositva DATE, kicsoda VARCHAR2(30))

18
Megoldás - a trigger
  • CREATE OR REPLACE TRIGGER naplozAFTER UPDATE ON
    vevok FOR EACH ROWBEGIN INSERT INTO
    vevo_naplo (vevokod, modositva,
    kicsoda) VALUES (old.vevokod, SYSDATE,
    USER)END /

19
Tárolt programok
20
Tárolt program
  • Az adatbázisban tároljuk
  • Eljárás, függvény vagy programcsomag lehet
  • a csomagok változókat, eljárásokat és
    függvényeket tartalmazhatnak
  • PL/SQL nyelven íródik
  • az újabb Oracle-verziók a Java és a C használatát
    is támogatják
  • Nagymennyiségu adat feldolgozására a
    leghatékonyabb megoldás

21
Tárolt eljárás létrehozása / módosítása
  • CREATE OR REPLACE PROCEDURE név
    (paraméterlista) IS AS deklarációkBEGIN
    utasításokEXCEPTION kivételkezelés END név

22
Tárolt függvény létrehozása / módosítása
  • CREATE OR REPLACE FUNCTION név
    (paraméterlista) RETURN adattípus IS AS
    deklarációkBEGIN utasításokEXCEPTION kivé
    telkezelés END név

a függvény adattípusa
23
Példa tárolt eljárás létrehozására
paraméterek
  • CREATE OR REPLACE PROCEDURE ataraz
    (cikkcsoport INTEGER, szazalek NUMBER) IS-- A
    megadott cikkcsoportba tartozó termékek-- árának
    emelése az adott százalékkal.-- (Negatív
    százalék esetén árcsökkentést jelent.) szorzo
    NUMBERBEGIN IF szazalek lt -100 THEN
    RAISE_APPLICATION_ERROR(-20100,
    Negatív lenne az ár!) ELSE
    szorzo (100 szazalek) / 100 UPDATE
    cikk SET egysegar egysegar szorzo
    WHERE cikkcsop cikkcsoport COMMIT
  • END IFEND ataraz
  • /

deklaráció
SQLPlusban szükséges a végrehajtatáshoz
24
Tárolt eljárás hívása SQLPlus-ból
  • Az EXECUTE paranccsal
  • PéldaEXECUTE ataraz(1, 10)

25
A forráskód tárolása az adatbázisban
  • A USER_SOURCE nézettáblában történik
    (rekordonként egy sor)
  • A példaként elkészített tárolt eljárás szövegének
    lekérdezéseSELECT text FROM USER_SOURCEWHERE
    name ATARAZ AND type PROCEDUREORDER BY
    line

fontos a nagybetu!
a sor száma a forráskódban
26
Tárolt eljárás / függvény törlése
  • AlakjaDROP PROCEDURE FUNCTION név
  • PéldaDROP PROCEDURE ataraz

27
ALTER PROCEDURE / FUNCTION
  • Van ilyen utasítás is
  • Nem a kód megváltoztatására szolgál
  • Csak újrafordítani lehet vele a meglévo eljárást
    / függvényt

28
2. feladat
  • Tárolt eljárás készítése az alábbiak szerint
  • neve torol
  • bemeno paraméter egy vevo kódja
  • tevékenység a vevo nyomtalan eltüntetése az
    adatbázisból
  • Figyelem! A vevo addig nem törölheto, amíg más
    táblák hivatkoznak rá!

29
2. feladat - megoldás
  • CREATE OR REPLACE PROCEDURE torol (vevo
    VARCHAR2) ISBEGIN -- a tételek törlése a vevo
    megrendeléseibol
  • DELETE FROM rtetel WHERE rszam IN (SELECT
    rszam FROM rendel WHERE vevokod vevo)
    -- a vevo megrendeléseinek törlése
  • DELETE FROM rendel WHERE vevokod vevo
  • -- a vevo törlése
  • DELETE FROM vevok WHERE vevokod vevo
  • COMMIT
  • EXCEPTION -- bármiféle hiba esetén
    visszagörgetés WHEN OTHERS THEN ROLLBACKEND
    torol
  • /

a hosszát itt nem kell megadni!
30
Házi feladat
  • Trigger készítése, ami a a VEVOK táblából történo
    törlés esetén az 1. feladatnál elkészített
    VEVO_NAPLO nevu táblába beírja
  • minden törölt vevo kódját,
  • a törlés idejét
  • és a törlést végrehajtó felhasználó login-nevét
    csupa kisbetuvel
  • Tárolt eljárás készítése
  • bemeno paramétere egy dátum
  • a fenti VEVO_NAPLO táblából törli a megadott
    dátumnál régebbi bejegyzéseket

31
Kliens oldali Oracle programok
32
Az Oracle Client
  • Kb. 25 alkalmazás rendszergazdáknak és server
    oldali fejlesztoknek
  • Gyakrabban használt összetevok
  • Enterprise Manager Console grafikus felület
    adatbázisok felügyeletére és hangolására
  • SQLPlus Worksheet grafikus felület SQL parancsok
    kiadására
  • SQLPlus karakteres felület SQL parancsok
    kiadására

33
Az Oracle Developer 1.
  • Kb. 15 alkalmazás (alapvetoen kliens oldali)
    fejlesztoknek
  • Gyakrabban használt összetevok
  • Form Builder adatbeviteli urlapok (formok)
    készítésére (mint az Access urlapok)
  • Report Builder listák készítésére (mint az
    Access jelentések)

34
Az Oracle Developer 2.
  • Gyakrabban használt összetevok (folytatás)
  • Procedure Builder triggerek, tárolt programok és
    kliens oldali PL/SQL programok készítésére
  • Graphics Builder a tárolt adatokból diagramok
    készítésére
  • Query Builder lekérdezések készítésére (mint
    Accessben)

35
Oracle Designer
  • Több, többé-kevésbé független eszköz gyujteménye
  • Fo funkciói
  • üzleti folyamatok modellezése
  • adatbázis tervezése
  • alkalmazás-tervezés
  • az adatbázist eloállító scriptek generálása
  • programok generálása

36
TOAD
  • A Quest Software nevu független cég terméke
  • Kényelmes felület az adatbázis kezeléséhez
  • hasonló az SQL Developerhez, de sokoldalúbb
  • A próbaverzió letöltheto a http//www.toadsoft.com
    /downld.html címrol
Write a Comment
User Comments (0)
About PowerShow.com