2006. október 30.Markó Tamás, PTE TTK1 Az Oracle SQL 9. Triggerek és tárolt eljárások. Kliens oldali programok.

Slides:



Advertisements
Hasonló előadás
Tananyag: konzultáció
Advertisements

2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Adatbázis rendszerek I
Anyagadatbank c. tárgy gyakorlat
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
2006. december 2.Markó Tamás, PTE TTK1 Az Oracle SQL 15. Hangolás.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
Delphi programozás alapjai
Adatbázis kezelés. Hierarchikus modell Legrégebbi modell, ma már nem használatos. Az adatokat fákban tároljuk, ahol minden pont a szegmens adatokat, és.
Adatbázis alapú rendszerek
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
PL/SQL I. ADATBÁZIS ALAPÚ RENDSZEREK.  PL/SQL = Procedural Language/SQL  utasítást ; zárja le  PL/SQL blokk lezárása: /  kis- és nagybetű egyenértékű.
INSERT INTO Egy vagy több rekordot ad hozzá a táblához. Egyetlen rekordot hozzáfűző kifejezés: INSERT INTO cél_tábla (mező1,mező2,…) VALUES (érték1, érték2,
Triggerek II. ADATBÁZIS ALAPÚ RENDSZEREK.  Az Oracle kifinomult módon támogatja a sorszámozások generálását  Szekvencia: olyan adatbázis-objektum, amely.
Adatbázis alapú rendszerek
Adatbázis rendszerek II.
Készítette: Sárközi Anikó
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 9.Markó Tamás, PTE TTK1 Az Oracle SQL 7. Kényszerek megadása. Indexek kezelése.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 4. Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
2005. december 12.Markó Tamás, PTE TTK1 Az Oracle SQL 11. Elemzések támogatása.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ORACLE ORDBMS adminisztrációs feladatok 6. rész dr. Kovács László 2004.
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
SQL, adatdefiníció, adatok megváltoztatása, megszorítások
Adatbázis kezelés SQL. Történeti áttekintés 1976IBM:SEQUEL,SQL 1976IBM:SEQUEL,SQL 1983ORACLE 1983ORACLE 1984INFORMIX 1984INFORMIX 1986SQL – szabvány :
Kényszerek megadása. Indexek kezelése.
Nézettáblák létrehozása, módosítása és törlése
1 Informatikai Szakképzési Portál Adatbázis kezelés DML – Adat manipuláló nyelv.
- adatbázisséma definiálása (DDL) Data Definition Languages, - adatok aktualizálása (DML),Data Maniputaion Language - lekérdezési lehetőségek (DML) Data.
SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus.
Az SQL nyelv alapjai.
DML. Új rekord beszúrása: INSERT INTO tábla (oszlop1,oszlop2,…) VALUES (érték1,érték2,…); Rekord módosítása: UPDATE tábla SET oszlop = érték WHERE feltétel;
DDL – Adatdefiníciós nyelv
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
Adatbázis-kezelés SQL-lel
Felhasználók és jogosultságok
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
SQL-Structured Query Language. Parancs(utasítás) csoportok CREATE - táblák létrehozása ALTER – táblák módosítása DROP – táblák törlése DDL –Data Definition.
SQL.
A gyakorlatok munkakörnyezete
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
Adatbázis-kezelés Tarcsi Ádám január. 15. MySQL és PHP.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai
PL/SQL alapok Adatbázis-kezelés.
Adatbázis rendszerek II
Ma az un. Relációs adatmodelleket használjuk.
5. gyakorlat Fleiner Rita.
Webprogramozó tanfolyam
SQL. SQL jellemzői Nem algoritmikus (nem tartalmaz algoritmikus szerkezeteket: ciklus, eljárás, elágazás) Nem rekurzív (önmagát nem hívhatja) Halmazorientált.
Adatbázis rendszerek I
Adatbázis alapú rendszerek
Triggerek gyakorlás.
Triggerek Kalmár György.
adatbázis alapú rendszerek
Logisztikai projekt - gyakorlat Adatbázis-elmélet
Előadás másolata:

2006. október 30.Markó Tamás, PTE TTK1 Az Oracle SQL 9. Triggerek és tárolt eljárások. Kliens oldali programok.

2006. október 30.Markó Tamás, PTE TTK2 A rádiótelefonokat kérem KIKAPCSOLNI!

2006. október 30.Markó Tamás, PTE TTK3 Triggerek

2006. október 30.Markó Tamás, PTE TTK4 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

2006. október 30.Markó Tamás, PTE TTK5 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

2006. október 30.Markó Tamás, PTE TTK6 A triggerek fő alkalmazási lehetőségei Bonyolult, kényszerekben nem leírható adat- ellenőrzések Származtatott oszlopok értékének kiszámítása Naplózás Statisztikák gyűjtése a táblák eléréséről Nézettáblákon keresztül történő adatmódosítások megvalósítása

2006. október 30.Markó Tamás, PTE TTK7 Trigger létrehozása / módosítása DML-utasításhoz kapcsolódó triggernél az utasítás alapformája: CREATE [OR REPLACE] TRIGGER triggernév BEFORE | AFTER | INSTEAD OF [INSERT] [OR] [UPDATE] [OR] [DELETE] ON táblanév | nézetnév [FOR EACH ROW] [DECLARE deklarációk] BEGIN utasítások END; milyen eseményre induljon a végrehajtandó tevékenység előírása

2006. október 30.Markó Tamás, PTE TTK8 BEFORE / AFTER / INSTEAD OF Megadja, hogy a trigger a kiváltó esemény előtt, 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ó

2006. október 30.Markó Tamás, PTE TTK9 :old és :new A mezők módosítás előtti é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 < 100 THEN :new.egysegar := 100; -- túl olcsó lenne! END IF; …

2006. október 30.Markó Tamás, PTE TTK10 1. példa triggerre CREATE OR REPLACE TRIGGER arvaltozas_kiirasa BEFORE DELETE OR INSERT OR UPDATE ON cikk FOR EACH ROW DECLARE ardiff number; BEGIN ardiff := :new.egysegar - :old.egysegar; dbms_output.put(:new.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; / SQL*Plusban szükséges a végrehajtatáshoz kiírja a képernyőre a cikk nevét, régi és új árát és a két ár eltérését minden adatmódosító utasításnál elindul a CIKK tábla minden megváltozott sorára

2006. október 30.Markó Tamás, PTE TTK11 A DBMS_OUTPUT csomag üzeneteinek megjelenítése Az üzenetek kliens oldali megjelenítéséhez SQL*Plusban a SET SERVEROUTPUT ON SIZE ; utasítást ki kell előtte adni!

2006. október 30.Markó Tamás, PTE TTK12 legkorábban 18 éves korában lehet 1. éves, 19 éves korában 2. éves, stb. 2. példa triggerre CREATE OR REPLACE TRIGGER eleg_idos BEFORE INSERT OR UPDATE ON hallgato FOR EACH ROW DECLARE szul_evNUMBER(4); folyo_evNUMBER(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 > folyo_ev THEN RAISE_APPLICATION_ERROR (-20101, ‘Túl fiatal ahhoz, hogy ‘ || :new.evfolyam || ‘. éves legyen!’); END IF; END; / SQL*Plusban szükséges a végrehajtatáshoz adatbevitel / módosítás hatására indul el a HALLGATO tábla minden megváltozott sorára

2006. október 30.Markó Tamás, PTE TTK13 A triggereink adatainak megnézése Az alábbi táblában találunk információkat: –USER_TRIGGERS –ALL_TRIGGERS –DBA_TRIGGERS

2006. október 30.Markó Tamás, PTE TTK14 Trigger törlése Alakja: DROP TRIGGER triggernév; Példa: DROP TRIGGER arvaltozas_kiirasa;

2006. október 30.Markó Tamás, PTE TTK15 … é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évő triggert

2006. október 30.Markó Tamás, PTE TTK16 1. feladat Trigger készítése, amely a VEVOK tábla módosítása (UPDATE) esetén egy VEVO_NAPLO nevű táblába beírja – minden módosított vevő (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!

2006. október 30.Markó Tamás, PTE TTK17 Megoldás - a tábla CREATE TABLE vevo_naplo ( vevokodVARCHAR2(8), modositvaDATE, kicsodaVARCHAR2(30) );

2006. október 30.Markó Tamás, PTE TTK18 Megoldás - a trigger CREATE OR REPLACE TRIGGER naploz AFTER UPDATE ON vevok FOR EACH ROW BEGIN INSERT INTO vevo_naplo (vevokod, modositva, kicsoda) VALUES (:old.vevokod, SYSDATE, USER); END; /

2006. október 30.Markó Tamás, PTE TTK19 Tárolt programok

2006. október 30.Markó Tamás, PTE TTK20 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égű adat feldolgozására a leghatékonyabb megoldás

2006. október 30.Markó Tamás, PTE TTK21 Tárolt eljárás létrehozása / módosítása CREATE [OR REPLACE] PROCEDURE név [(paraméterlista)] IS | AS [deklarációk] BEGIN utasítások [EXCEPTION kivételkezelés] END [név];

2006. október 30.Markó Tamás, PTE TTK22 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ók] BEGIN utasítások [EXCEPTION kivételkezelés] END [név]; a függvény adattípusa

23 Példa tárolt eljárás létrehozására 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 NUMBER; BEGIN IF szazalek < -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 IF; END ataraz; / deklaráció paraméterek SQL*Plusban szükséges a végrehajtatáshoz

2006. október 30.Markó Tamás, PTE TTK24 Tárolt eljárás hívása SQL*Plus-ból Az EXECUTE paranccsal Példa: EXECUTE ataraz(1, 10);

2006. október 30.Markó Tamás, PTE TTK25 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ése: SELECT text FROM USER_SOURCE WHERE name = ‘ATARAZ’ AND type = ‘PROCEDURE’ ORDER BY line; fontos a nagybetű! a sor száma a forráskódban

2006. október 30.Markó Tamás, PTE TTK26 Tárolt eljárás / függvény törlése Alakja: DROP PROCEDURE | FUNCTION név; Példa: DROP PROCEDURE ataraz;

2006. október 30.Markó Tamás, PTE TTK27 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évő eljárást / függvényt

2006. október 30.Markó Tamás, PTE TTK28 2. feladat Tárolt eljárás készítése az alábbiak szerint: –neve: torol –bemenő paraméter: egy vevő kódja –tevékenység: a vevő nyomtalan eltüntetése az adatbázisból Figyelem! A vevő addig nem törölhető, amíg más táblák hivatkoznak rá!

2006. október 30.Markó Tamás, PTE TTK29 2. feladat - megoldás CREATE OR REPLACE PROCEDURE torol (vevo VARCHAR2) IS BEGIN -- a tételek törlése a vevő megrendeléseiből: DELETE FROM rtetel WHERE rszam IN (SELECT rszam FROM rendel WHERE vevokod = vevo); -- a vevő megrendeléseinek törlése: DELETE FROM rendel WHERE vevokod = vevo; -- a vevő törlése: DELETE FROM vevok WHERE vevokod = vevo; COMMIT; EXCEPTION -- bármiféle hiba esetén visszagörgetés: WHEN OTHERS THEN ROLLBACK; END torol; / a hosszát itt nem kell megadni!

2006. október 30.Markó Tamás, PTE TTK30 Házi feladat Trigger készítése, ami a a VEVOK táblából történő törlés esetén az 1. feladatnál elkészített VEVO_NAPLO nevű táblába beírja – minden törölt vevő kódját, –a törlés idejét –és a törlést végrehajtó felhasználó login-nevét csupa kisbetűvel Tárolt eljárás készítése –bemenő paramétere egy dátum –a fenti VEVO_NAPLO táblából törli a megadott dátumnál régebbi bejegyzéseket

2006. október 30.Markó Tamás, PTE TTK31 Kliens oldali Oracle programok

2006. október 30.Markó Tamás, PTE TTK32 Az Oracle Client Kb. 25 alkalmazás rendszergazdáknak és server oldali fejlesztőknek Gyakrabban használt összetevők: –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 –SQL*Plus: karakteres felület SQL parancsok kiadására

2006. október 30.Markó Tamás, PTE TTK33 Az Oracle Developer 1. Kb. 15 alkalmazás (alapvetően kliens oldali) fejlesztőknek Gyakrabban használt összetevők: –Form Builder: adatbeviteli űrlapok (formok) készítésére (mint az Access űrlapok) –Report Builder: listák készítésére (mint az Access jelentések)

2006. október 30.Markó Tamás, PTE TTK34 Az Oracle Developer 2. Gyakrabban használt összetevők (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)

2006. október 30.Markó Tamás, PTE TTK35 Oracle Designer Több, többé-kevésbé független eszköz gyűjteménye Fő funkciói: –üzleti folyamatok modellezése –adatbázis tervezése –alkalmazás-tervezés –az adatbázist előállító scriptek generálása –programok generálása

2006. október 30.Markó Tamás, PTE TTK36 TOAD A Quest Software nevű 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ölthető a címről