PL/SQL blokk. [címke] [DECLARE deklarációs utasítás(ok)] BEGIN végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név];

Hasonló dokumentumok
Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

Haladó DBMS ismeretek 1

B IT MAN 65/1. Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN. v:

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

PL/SQL (folytatás) Kurzorok, függvények, eljárások

Tranzakciókezelés PL/SQL-ben

Kivételkezelés 2. SQLCODE lehetséges értékei:

Összefoglaló. <variable_name> [IN OUT IN OUT] <data_type> [:=<default_value>] ... <label_name>: <statements>... GOTO <label_name>;...

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

B I T M A N B I v: T M A N

Együttes hozzárendelés

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A 1-1

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Triggerek. Olyan névvel ellátott adatbázisobjektumok, amelyek eseményorientált feldolgozást tesznek lehetővé

Hatékony PL/SQL programok írása

A trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja:

Adatbázis Rendszerek II. 3. PLSQL alapok 92/1B IT MAN

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN

B I T M A N B I v: T M A N

Adatbázis Rendszerek II. 2. Gyakorló környezet

8-9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

PL/SQL 1. rész. Procedural Language extension to SQL

B I T M A N B I v: T M A N

Adatbázis Rendszerek II. 4. PLSQL Kurzorok, hibakezelés 53/1B IT MAN

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 2. Előadás: Tárolt eljárások

Kalmár György Adatbázis alapú rendszerek

A PL/SQL motor. A PL/SQL nyelvű egységek fordítását és futtatását végző rendszer. az adatbázis-kezelőben fejlesztőeszközben (pl.

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Adatbázisban tárolt kollekciók

PL/SQL feladatok 8. gyakorlat

Tankönyvben: SQL/PSM Gyakorlaton: Oracle PL/SQL

Hozzunk ki többet abból amink van. Fehér Lajos

A C programozási nyelv II. Utasítások. A függvény.

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Database Systems II. ZH összefoglaló

Programozási nyelvek (ADA)

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

B I T M A N B I v: T M A N

Adatbázis Rendszerek II. 4. Ea: MySQL Tárolt eljárások 110/1 B IT MAN

Alprogramok, paraméterátadás

SQL OO elemei aktív komponensek

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Összetett típusok Rekordtípus

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Programozási nyelvek (ADA)

6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Bevezetés: az SQL-be

Kliens oldali SQL-API

Adatbázis használat I. 5. gyakorlat

ELTE SAP Excellence Center Oktatóanyag 1

Eljárások és függvények

Kifejezések. Kozsik Tamás. December 11, 2016

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Programstrukturáló utasítások

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Jegyz könyv. Adatbázis-rendszerek II. Beadandó feladat. Miskolci Egyetem

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Adatbázis Rendszerek II. 8. Gyakorló környezet

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Programozási nyelvek I. (Az Ada) Kozsik Tamás

SQL/PSM tárolt modulok rész

Adatbázis Rendszerek II. 7. PLSQL JOB-ok 25/1B IT MAN

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

SQL/PSM kurzorok rész

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 3. Előadás: Tárolt eljárások (folytatás) Nézetek

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Adatbázis rendszerek. Gyakorlati jegyzet. Készítette: Selling István

2. előadás Programegység, fordítási egység, könyvtári egység, beágyazás, blokkszerkezet, alprogramok, csomagok

Algoritmizálás + kódolás C++ nyelven és Pascalban

Adattípusok. Tartomány, műveletek, reprezentáció Altípus: azonos műveletek és reprezentáció, szűkebb tartomány Osztályozás:

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Alkalmazott Modul III 3. előadás. Procedurális programozás: alprogramok, kivételkezelés

SQL DDL-1: táblák és megszorítások

Alkalmazott Modul III 3. előadás. Procedurális programozás: alprogramok, kivételkezelés. Alprogramok Szükségessége

Adatbázis kezelés Delphiben. SQL lekérdezések

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Bevezetés a C++ programozási nyelvbe

Eljárások, függvények

Tankönyv: SQL/PSM + Gyak:PL/SQL

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Bevezetés: Relációs adatmodell

Spatial a gyakorlatban

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Programozás II. 2. Dr. Iványi Péter

ADATBÁZIS RENDSZEREK I BEADANDÓ

Informatika terméktervezőknek

Egyszerű példaprogramok gyakorláshoz

Programozás alapjai. 7. előadás

Imperatív programozás

Adattípusok. Max. 2GByte

Algoritmizálás és adatmodellezés tanítása 1. előadás

Adattípusok. Max. 2GByte

Átírás:

PL/SQL blokk [címke] [DECLARE deklarációs utasítás(ok)] végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név];

PL/SQL alprogramok Blokkba ágyazva Séma szinten Csomagban

PL/SQL alprogramok Eljárás: PROCEDURE név[(formális paraméterlista)] IS [deklarációs utasítás(ok)] végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név]; Függvény: FUNCTION név[(formális paraméterlista)] RETURN típus IS [deklarációs utasítás(ok)] végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név];

declare b number(2); procedure ures is a varchar2(20); begin a:=''; end ures; function ketto return number is begin return 2; end; begin ures; b:=ketto; end;

Formális paraméterlista Formális paraméterekből áll név [{IN {OUT IN OUT} [NOCOPY]}] típus [{:= DEFAULT} kifejezés] IN: érték szerinti (de nincs értékmásolás) OUT: eredmény szerinti IN OUT: érték-eredmény szerinti paraméterátadás NOCOPY: tanács (hint) a fordítónak, hogy OUT/IN OUT esetben se másoljon értéket A paraméterösszerendelés történhet pozíció és/vagy név szerint Lokális és csomagbeli alprogramnevek túlterhelhetők

DECLARE v_szam NUMBER; PROCEDURE inp(p_in IN NUMBER) IS DBMS_OUTPUT.PUT_LINE('in:' p_in); -- p_in:=0; END inp; v_szam := 10; DBMS_OUTPUT.PUT_LINE('1:' v_szam); inp(v_szam); inp(v_szam + 1000); END; /

DECLARE v_szam NUMBER; PROCEDURE outp(p_out OUT NUMBER) IS DBMS_OUTPUT.PUT_LINE(NVL(p_Out, -1)); p_out := 20; END outp; v_szam := 10; DBMS_OUTPUT.PUT_LINE('2:' v_szam); outp(v_szam); -- outp(v_szam + 1000); END; /

DECLARE v_szam NUMBER; PROCEDURE inoutp(p_inout IN OUT NUMBER) IS DBMS_OUTPUT.PUT_LINE('inout:' p_inout); p_inout := 30; END inoutp; v_szam := 10; DBMS_OUTPUT.PUT_LINE('3:' v_szam); inoutp(v_szam); -- inoutp(v_szam + 1000); END; /

DECLARE v_szam NUMBER; PROCEDURE outp_kivetel(p_out IN OUT NUMBER) IS p_out := 40; DBMS_OUTPUT.PUT_LINE('kiv. előtt:' p_out); RAISE VALUE_ERROR; END outp_kivetel; v_szam := 10; DBMS_OUTPUT.PUT_LINE('4:' v_szam); outp_kivetel(v_szam); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('kiv.kezelőben v_szam); END;

Formális és aktuális paraméterek Egymáshoz rendelés: pozíció szerinti (sorrendi kötés) név szerinti kötés Keverve a kettő, először a pozíció szerintiek majd a név szerintiek Fix paraméterű alprogramok Az aktuális paraméterek száma kevesebb lehet, mint a formális paraméterek száma Alprogramok túlterhelése

DECLARE v_datum DATE:=TO_DATE('2006-04-10 20:00:00', 'YYYY-MM-DD HH24:MI:SS'); FUNCTION to_char2( p_datum DATE DEFAULT SYSDATE, p_format VARCHAR2 DEFAULT 'YYYY-MON-DD HH24:MI:SS' ) RETURN VARCHAR2 IS return TO_CHAR(p_Datum, p_format); END to_char2;

DBMS_OUTPUT.PUT_LINE(to_char2(v_Datum, 'MM.DD')); DBMS_OUTPUT.PUT_LINE( to_char2(p_format => 'YYYY-MON-DD, p_datum => v_datum)); DBMS_OUTPUT.PUT_LINE( to_char2(p_format => YY-MM-DD')); DBMS_OUTPUT.PUT_LINE(to_char2(v_Datum, p_format => 'YYYY-MON-DD')); DBMS_OUTPUT.PUT_LINE(to_char2); END; /

Hatáskör, élettartam Statikus hatáskörkezelés egy név csak deklarációjától kezdve látszik Kezeli a lyuk a hatáskörben problémát Dinamikus élettartam-kezelés (blokkok és alprogramok esetén)

<<blokk>> DECLARE i NUMBER := 1; p VARCHAR2(10) := 'Hello'; PROCEDURE alprg1(p NUMBER DEFAULT 22) IS i NUMBER := 2; PROCEDURE alprg2(p NUMBER DEFAULT 555) IS i NUMBER := 3; FOR i IN 4..4 LOOP DBMS_OUTPUT.PUT_LINE(blokk.i ', ' blokk.p); DBMS_OUTPUT.PUT_LINE(alprg1.i ', ' alprg1.p); DBMS_OUTPUT.PUT_LINE(alprg2.i ', ' alprg2.p); DBMS_OUTPUT.PUT_LINE(i ', ' p); END LOOP; END alprg2; alprg2; END alprg1; alprg1; END blokk;

DECLARE PROCEDURE elj1(p NUMBER); PROCEDURE elj2(p NUMBER) IS DBMS_OUTPUT.PUT_LINE('elj2: ' p); elj1(p+1); END elj2; PROCEDURE elj1(p NUMBER) IS DBMS_OUTPUT.PUT_LINE('elj1: ' p); IF p = 0 THEN elj2(p+1); END IF; END elj1; elj1(0); END;

Tárolt alprogramok CREATE [OR REPLACE] eljárásfej [AUTHID {DEFINER CURRENT_USE}] eljárás_törzs CREATE [OR REPLACE] függvényfej [AUTHID {DEFINER CURRENT_USER}] [DETERMINISTIC] függvénytörzs

Információ a tárolt alprogramkról Adatszótárnézetek: USER_OBJECTS USER_SOURCE USER_ERRORS SQL*Plus: SHOW ERRORS

Tárolt alprogram újrafordítása és eldobása ALTER PROCEDURE eljárásnév COMPILE [DEBUG]; ALTER FUNCTION függvénynév COMPILE [DEBUG]; DROP PROCEDURE eljárásnév; DROP FUNCTION függvénynév;

Tárolt alprogram meghívása CALL alprogram_név ([aktuális_paraméter_lista]) [INTO gazdaváltozó];

create or replace procedure dopl(s varchar2) is begin dbms_output.put_line(s); end; / show errors

create or replace function hatvany(p_a number, p_b number) return number is begin return p_a**p_b; end; / show errors

Tárolt alprogramok meghívása begin dopl(hatvany(2,3)); end; /

Alprogramnevek túlterhelése DECLARE v_marad NUMBER; PROCEDURE marad( p_ugyfel_id ugyfel.id%type, p_kolcsonozhet OUT NUMBER) IS SELECT max_konyv - db INTO p_kolcsonozhet FROM (SELECT max_konyv FROM ugyfel WHERE id = p_ugyfel_id), END marad; (SELECT COUNT(1) AS db FROM kolcsonzes WHERE kolcsonzo = p_ugyfel_id);

PROCEDURE marad(p_ugyfel_nev ugyfel.nev%type, p_kolcsonozhet OUT NUMBER) IS v_id ugyfel.id%type; SELECT id INTO v_id FROM ugyfel WHERE nev = p_ugyfel_nev; marad(v_id, p_kolcsonozhet); END marad; marad(15, v_marad); DBMS_OUTPUT.PUT_LINE('1: ' v_marad); marad('komor Ágnes', v_marad); DBMS_OUTPUT.PUT_LINE('2: ' v_marad); END; /