Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Adatbázis rendszerek II

Hasonló előadás


Az előadások a következő témára: "Adatbázis rendszerek II"— Előadás másolata:

1 Adatbázis rendszerek II
Kovács László A PL/SQL nyelv további elemei

2 Adattípusok A PL/SQL adattípusai igazodnak az Oracle DBMS adattípusaihoz. NUMERIC numerikus INTEGER … CHAR szöveges hagyományos relációs adattípusok VARCHAR… gyári dátum DATE bináris RAW adattípus logikai BOOELAN VARRAY más típusokra hivatkozik halmaz TABLE saját rekord RECORD UDT

3 Adattípusok Rekord adattípus
Több (esetleg különböző) típusú adatelemek együttese Fix méret Adatbázisba közvetlenül nem tárolható le Tábla rekordnak felel meg (SELECT, INSERT, UPDATE-ben felhasználható)

4 Üzleti logika és adatbázis integrálása
Az üzleti logika procedurális nyelven definiált. Alkalmazható programozási nyelvek: - külső (pl. java, C) - saját - SQL/kiegészítés Külső: alkalmazzák (pl. Postgres) +: ismert, sok funkció -: laza integráció,védelem Saját: ritkán alkalmazzák (pl. VFP) +: testre szabható -: új ismereteket igényel, zártság SQL kiegészítés: sokan alkalmazzák (pl. Oracle, SQLServer) +: szoros integráció -: sok új elem van a nyelvben, zártság

5 PL/SQL alapjai PL/SQL: az Oracle SQL kiegészítése a procedurális elemeket definiálására A PL/SQL kódok építő köve a PL/SQL blokk DECLARE Deklarációs rész BEGIN Törzs, kód rész blokk EXCEPTION Hiba kezelő rész A blokk még nem adatbázis objektum (pl. nincs neve) END

6 PL/SQL alapjai A PL/SQL blokk felhasználása Tárolt eljárás
Tárolt függvény Triggerek JOB Közvetlen futtatás

7 Tárolt eljárások, PL/SQL elemei
A tárolt eljárások DB objektumként védhető, karbantartható CREATE OR REPLACE PROCEDURE név (pnev1 IN | OUT típus1,… ) AS PL/SQL blokk Paramétereknél: IN: bemenő paraméter OUT: értéket kap, amit kinn is látni kellene Elindítása: EXECUTE név (param1, ..) Megszüntetése: DROP PROCEDURE név

8 KÉP Thom Evans (?): Repetition

9 Programozási elemek A deklarációs rész felépítése adattípus DECLARE
nev CHAR(10); kor NUMBER(5,1) := 12; tip CONSTANT CHAR(2) := ‘AL’; ig EMBER.IGSZ%TYPE; auto AUTO%ROWTYPE; kezdőérték konstans érték DB tábla megadott mezőjének típusát veszi fel változó neve rekord típus, DB tábla rekordtípusát veszi fel KL KL

10 Alap adattípusok BINARY_INTEGER: egész, bináris, +/-214783647-ig
NUMBER(n,m): valós, számjegyes CHAR(n): szöveg VARCHAR2(n): változó méretű szöveg BOOLEAN: logikai DATE: dátum, idő RAW: bináris LONG: hosszú szöveg(2GB) LONG RAW: hosszú bináris(2GB) declare s1 char(5) := '12'; s2 char(5) := '12 '; => s1 = s2 ist TRUE declare s1 varchar2(5) := '12'; s2 varchar2(5) := '12 '; => s1 = s2 ist FALSE

11 Alap operátorok Operátorok prioritási táblázata NOT, **
+, - (előjelek) /, * +, -, || =, !=, <, >, <=, >=, IS NULL,LIKE,BETWEEN,IN AND OR Néhány függvény Szöveg : upper(), initcap(), substr(), length(), rtrim() dátum : sysdate, to_date(), to_char(), t_number() numerikus : abs(), mod(), round() ...

12 Programozási elemek A törzs rész felépítése értékadás BEGIN
nev := ‘mars’; IF x > 4 THEN .. ELSE END IF; UPDATE auto SET ar = x WHERE …; SELECT ar,ig,.. INTO x, y.. FROM .. NULL; END feltételes végrehajtás SQL parancsok gazdanyelvi változó Egy rekord lekérdezése gazdanyelvi változóba Üres parancs KL KL

13 Programozási elemek A törzs rész felépítése BEGIN LOOP ..
EXIT [WHEN felt]; END LOOP; WHILE x < 2 LOOP FOR x IN [REVERSE] … LOOP END; alapciklus kilépés [feltétel esetén] feltételes ciklus léptetéses ciklus Egy halmaz elemeire

14 Programozási elemek Többszörös elágazás BEGIN .. elágazás rész nyitása
CASE WHEN feltétel THEN tevékenység; WHEN feltétel THEN tevékenység; END; ELSE tevékenység; END CASE; END elágazás rész nyitása egy feltétel ág tevékenység blokk egyéb ág elágazás rész zárása

15 Programozási elemek Kurzor szerkezet, több rekord beolvasása a DB-ből
DECLARE CURSOR cnev(param) IS SELECT ..; BEGIN OPEN cnev(aparam); LOOP FETCH cnev INTO vlista; EXIT WHEN cnev%NOTFOUND; END LOOP; CLOSE cnev; deklaráció, paraméterrel nyitás rekord olvasás kilépés a ciklusból lezárás DBMS PL/SQL blokk kurzor

16 Programozási elemek Közvetlen kurzorkezelési ciklus DECLARE
CURSOR cnev(param) IS SELECT ..; BEGIN OPEN cnev(aparam); FOR c1 IN cnec LOOP x := c1.mezo1; ... END LOOP; CLOSE cnev; deklaráció, paraméterrel nyitás ciklus Hivatkozás egy mezőre lezárás

17 Programozási elemek Hibakezelés DECLARE hnev EXCEPTION; saját hibakód deklarálás hiba explicit generálása BEGIN RAISE hnev ; EXCEPTION WHEN hiba THEN ….. WHEN OTHERS THEN …. hiba azonosítása hibakezelő rutin egyéb hibák kezelése

18 Hibakódok no-data-found : nincs több adat
Cursor-already-open : már nyitott a kurzor Dup-val-On-index : kulcs dupplikálás Storage-error : memória hiba Program-error : pl/SQL motor hiba Zero-divide : nullával való osztás invalid-cursor : nem élő kurzor Login-denied : érvénytelen bejelentkezés Invalid-number : adattípus hiba Too-many-rows : több mint egy eredményrekord

19 Minta kód DECLARE v_einheit_kurz varchar2(10); v_bezeichnung varchar2(40); BEGIN v_einheit_kurz := 'kg'; v_bezeichnung := 'Kilogramm'; insert into einheit (einheit_kurz, bezeichnung) values (v_einheit_kurz, v_bezeichnung); EXCEPTION when DUP_VAL_ON_INDEX then update einheit set bezeichnung = v_bezeichnung where einheit_kurz = v_einheit_kurz; END;

20 Minta kód declare function einheit_existiert (p_einheit_kurz in varchar2) return boolean is v_anzahl pls_integer; begin select count(*)into v_anzahl from einheit where einheit_kurz = p_einheit_kurz; return v_anzahl > 0; end; if not einheit_existiert ('m') then insert into einheit (einheit_kurz, bezeichnung) values (m', 'Meter'); end if;

21 Minta kód DECLARE e_rec emp%ROWTYPE; e1 EXCEPTION; sal1 emp.sal%TYPE; BEGIN SELECT sal INTO sal1 FROM emp WHERE deptno = 30 AND ename = 'John'; IF sal1 < 5000 THEN RAISE e1; sal1 := 8500; UPDATE emp SET sal = sal1 WHERE deptno = 30 AND END IF; EXCEPTION WHEN no_data_found THEN RAISE_APPLICATION_ERROR (-20001, 'John távol van'); WHEN e1 THEN RAISE_APPLICATION_ERROR (-20002, ’Less Salary.'); END;

22 kép Thom Evans: Whispers

23 Adatkezelés speciális elemei

24 Thom Evans: My new hat


Letölteni ppt "Adatbázis rendszerek II"

Hasonló előadás


Google Hirdetések