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

Hasonló dokumentumok
DRAFT. PL/SQL programozás. Alkalmazásfejlesztés Oracle 10g-ben ISBN PL/SQL programozás

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

PL/SQL programozás Alkalmazásfejlesztés Oracle 10g-ben Gábor, András Juhász, István

Haladó DBMS ismeretek 1

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

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

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

Adatbázis Rendszerek II. 3. SQL alapok

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

Összetett típusok Rekordtípus

Java II. I A Java programozási nyelv alapelemei

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

Tranzakciókezelés PL/SQL-ben

Adatbázis-kezelés. Harmadik előadás

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

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

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

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

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];

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

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Adatbázisok* tulajdonságai

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Készítette: Nagy Tibor István

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

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

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

Java II. I A Java programozási nyelv alapelemei

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

A C# programozási nyelv alapjai

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

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

Adattípusok. Max. 2GByte

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

Adattípusok. Max. 2GByte

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

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

Informatika terméktervezőknek

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

Pénzügyi algoritmusok

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

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

A C# PROGRAMOZÁSI NYELV

WinPA levél import adatbázison keresztül v tól utolsó módosítás:

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# gyorstalpaló. Készítette: Major Péter

Máté: Számítógép architektúrák

Adatbázisban tárolt kollekciók

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

1. Egyszerű (primitív) típusok. 2. Referencia típusok

SQL Structured Query Language

A C programozási nyelv I. Bevezetés

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

A C programozási nyelv I. Bevezetés

Programozási nyelvek (ADA)

Bevezetés: az SQL-be

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

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

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

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

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

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

Az Oracle leggyakrabban használt függvényei

Pénzügyi algoritmusok

Együttes hozzárendelés

SQL OO elemei aktív komponensek

3. előadás Típusrendszerek. Az Ada típusai és típuskonstrukciós eszközei, I.

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

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

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

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Információs Technológia

Adatbázis-kezelés. Második előadás

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

OOP #14 (referencia-elv)

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

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

PROGRAMOZÁSI NYELVEK - ADA. GYAKORLAT JEGYZET

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

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Adatbázis-kezelés, információs-rendszerek

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

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

Átírás:

Adattípusok

Adattípusok Tartomány, műveletek, reprezentáció Altípus: azonos műveletek és reprezentáció, szűkebb tartomány Osztályozás: előre definiált vagy felhasználó által definiált skalár-, összetett, referencia-, LOB- és objektumtípusok

Előre definiált skalártípusok Numerikus család Karakteres család Logikai család Dátum/intervallum család

Numerikus típus Alaptípusok: PLS_INTEGER, BINARY_INTEGER 32 bites előjeles egész -2 147 483 648 2 147 483 647 BINARY_FLOAT egyszeres pontosságú IEEE 754 lebegőpontos BINARY_DOUBLE dupla pontosságú IEEE 754 lebegőpontos NUMBER 1E-130 és 1E126 közötti fixpontos vagy lebegőpontos

NUMBER[(p[,s])] NUMBER: legfeljebb 38 jegyű lebegőpontos Ha megadjuk a pontosságot és a skálát, fixpontos lesz: NUMBER(4), NUMBER(8,2) Típus Kezelendő érték Tárolt érték NUMBER 1111.2222 111.2222 NUMBER(3) 321 321 NUMBER(3) 3210 Túlcsordulás NUMBER(4,3) 33222 Túlcsordulás NUMBER(4,3) 3.23455 3.235 NUMBER(3, 3) 1234 1000 NUMBER(3, 1) 1234 1230

NUMBER Altípusai: DEC, DECIMAL, NUMERIC (nemkorlátozott, fixpontos) DOUBLE PRECISION, FLOAT (nem korlátozott, lebegőpontos) INT, INTEGER, SMALLINT (korlátozott, fixpontos) REAL (korlátozott, lebegőpontos)

PLS_INTEGER, BINARY_INTEGER Előnye: kisebb helyet foglal, mint a NUMBER, és hardveraritmetikát használ Túlcsordulás esetén: ORA-01426: numeric overflow Altípusai: NATURAL, NATURALN: természetes (+NOT NULL) POSITIVE, POSITIVEN: pozitív (+ NOT NULL) SIGNTYPE: előjel; -1,0,1 SIMPLE_INTEGER: azonos tartomány, de NOT NULL, és eltérő túlcsordulási szemantika (nincs kivétel)

BINARY_FLOAT, BINARY_DOUBLE Nem dobnak kivételt alul- ill. túlcsorduláskor, hanem konstansokkal kezelik a speciális helyzeteket BINARY_DOUBLE_NAN BINARY_DOUBLE_INFINITY BINARY_DOUBLE_MAX_NORMAL BINARY_DOUBLE_MIN_NORMAL BINARY_DOUBLE_MAX_SUBNORMAL BINARY_DOUBLE_MIN_SUBNORMAL

CHAR VARCHAR2 RAW NCHAR NVARCHAR2 LONG LONG RAW ROWID UROWID Karakteres típusok

Logikai típus BOOLEAN Háromértékű logika: TRUE, FALSE, NULL

Dátum/intervallum típusok Alaptípusok: DATE 7 bájton évszázad, év, hónap, nap, óra, perc, mp TIMESTAMP[(p)] időbélyeg, törtmásodpercek is (alapértelmezés: p=6) INTERVAL két időbélyeg közötti intervallum YEAR[(p)] TO MONTH alapértelmezés: p=2 DAY[(np)] TO SECOND[(mp)] alapértelmezés: np=2, mp=6

LOB típusok Belső LOB-ok BLOB CLOB NCLOB Külső LOB-ok BFILE Kezelni őket a DBMS_LOB csomaggal lehet

Összetett típusok Rekordtípus Kollekciótípus asszociatív tömb beágyazott tábla dinamikus tömb

Nevesített konstans és változó Változó név típus [[NOT NULL] {:= DEFAULT} kifejezés]; Pl: szuletesi_ido DATE; dolgozok_szama NUMBER NOT NULL DEFAULT 0; Nevesített konstans név CONSTANT típus [NOT NULL] {:= DEFAULT} kifejezés; Pl: max_napok_szama CONSTANT NUMBER := 366;

A deklarációban a típus az alábbiak egyike lehet 1.: skalár_adattípus_név változónév%type rekordtípus_név rekordnév%type adatbázis_tábla_név.oszlopnév%type adatbázis_tábla_név %ROWTYPE kurzornév%rowtype kurzorváltozó_név%type kurzorreferenciatípus_név

A deklarációban a típus az alábbiak egyike lehet 2.: kollekciótípus_név kollekciónév%type objektumnév%type [REF] objektumtípus_név

Példák 1. v_telszam ugyfel.tel_szam%type DEFAULT '06-52-123456'; v_telszam2 v_telszam%type; v_ugyfel v_ugyfel2 ugyfel%rowtype; v_ugyfel%type;

Példák 2. DECLARE v_szam1 NUMBER NOT NULL := 10; v_szam2 NUMBER; BEGIN v_szam1 := v_szam2; END; /

Példák 3. c_most CONSTANT DATE := SYSDATE; v_egeszszam PLS_INTEGER; v_logikai BOOLEAN; v_pozitiv POSITIVEN DEFAULT 1; v_idopecset TIMESTAMP := CURRENT_TIMESTAMP;

Összetett típusok Rekordtípus Rekordtípus deklarációja: TYPE név IS RECORD ( mezőnév típus [[NOT NULL] {:= DEFAULT} kifejezés] [, mezőnév típus [[NOT NULL] {:= DEFAULT} kifejezés]] ); Rekord deklarációja: rekordnév rekordtípusnév; Hivatkozás a rekord mezőjére: rekordnév.mezőnév;

Összetett típusok Rekordtípus Például: TYPE t_alk_rec IS RECORD ( nev VARCHAR2(46), fizetes NUMBER(8,2), email VARCHAR2(25) NOT NULL := 'a@b'); v_fonok t_alk_rec; Hivatkozás: v_fonok.nev

BEGIN v_tetel1.kod := 1; v_tetel1.nev := 'alma'; v_tetel1.nev := INITCAP(v_Tetel1.nev); v_tetel2 := v_tetel1; -- v_bejegyzes := v_tetel1; -- Hibás értékadás END; / DECLARE TYPE t_aru_tetel IS RECORD ( kod NUMBER NOT NULL := 0, nev VARCHAR2(20), afa_kulcs NUMBER := 0.25); TYPE t_aru_bejegyzes IS RECORD ( kod NUMBER NOT NULL := 0, nev VARCHAR2(20), afa_kulcs NUMBER := 0.25); v_tetel1 v_tetel2 t_aru_tetel; -- Itt nem lehet inicializálás és NOT NULL! t_aru_tetel; v_bejegyzes t_aru_bejegyzes; v_kod v_tetel1.kod%type := 10;

DECLARE TYPE t_kolcsonzes_rec IS RECORD ( bejegyzes plsql.kolcsonzes%rowtype, kolcsonzo plsql.ugyfel%rowtype, konyv plsql.konyv%rowtype ); v_kolcsonzes t_kolcsonzes_rec; FUNCTION fv(p_kolcsonzo v_kolcsonzes.kolcsonzo.id%type, p_konyv v_kolcsonzes.konyv.id%type) RETURN t_kolcsonzes_rec IS v_vissza t_kolcsonzes_rec; BEGIN v_vissza.kolcsonzo.id := p_kolcsonzo; v_vissza.konyv.id := p_konyv; RETURN v_vissza; END; BEGIN v_kolcsonzes.konyv.id := fv(10, 15).konyv.id; END; /

Felhasználói altípusok Egy alaptípus tartományának megszorításával jöhet létre vannak beépített altípusok (STANDARD csomag) SUBTYPE CHARACTER IS CHAR; SUBTYPE INTEGER IS NUMBER(38,0); Felhasználói altípusok létrehozása: altípusdeklarációval Blokk, alprogram vagy csomag deklarációs részében SUBTYPE altípus_név IS alaptípus_név[(korlát)] [NOT NULL]; korlát: hossz, pontosság, skála információk

Példák altípus használatára SUBTYPE t_szam IS NUMBER; SUBTYPE t_evszam IS NUMBER(4,0); SUBTYPE t_nev IS VARCHAR2(40); SUBTYPE t_nev2 IS t_nev(50); -- felüldefiniáljuk az előző hosszmegszorítást

Példák altípus használatára SUBTYPE t_tiz IS NUMBER(10); SUBTYPE t_egy IS t_tiz(1); -- NUMBER(1) SUBTYPE t_ezres IS t_tiz(10, -3); -- NUMBER(10, -3) v_tiz t_tiz := 12345678901; -- túl nagy az érték pontossága v_egy t_egy := 12345; v_ezres t_ezres := 12345; -- túl nagy az érték pontossága -- 12000 tárolódik SUBTYPE t_szo IS VARCHAR2; v_szo t_szo(10); v_szo2 t_szo; -- Hiba, nincs megadva a hossz

CREATE TABLE tab1 (id NUMBER NOT NULL, nev VARCHAR2(40)); / DECLARE SUBTYPE t_tabsor IS tab1%rowtype; SUBTYPE t_nev IS tab1.nev%type NOT NULL; SUBTYPE t_id IS tab1.id%type; SUBTYPE t_nev2 IS t_nev%type; v_id t_id; v_nev1 t_nev; v_nev2 t_nev := 'XY'; BEGIN v_id := NULL; v_nev2 := NULL; END; /

Kivéve a BINARY_INTEGER/PLS_INTEGER esetén, ahol korlátozott altípust is létre lehet hozni DECLARE SUBTYPE t_gyak_letszam IS... v_gyl t_gyak_letszam;... BEGIN v_gyl := 19; -- OK v_gyl := 3; BINARY_INTEGER RANGE 5..20; -- ORA-06502: PL/SQL: numerikus- vagy értékhiba...

Típuskonverziók Implicit a skalártípusok családjai között Explicit beépített fügvényekkel: TO_DATE, TO_NUMBER, TO_CHAR

Explicit konverziós függvények ASCIISTR BIN_TO_NUM CAST CHARTOROWID COMPOSE CONVERT DECOMPOSE HEXTORAW NUMTODSINTERVAL NUMTOYMINTERVAL RAWTOHEX RAWTONHEX ROWIDTOCHAR ROWIDTONCHAR SCN_TO_TIMESTAMP TIMESTAMP_TO_SCN TO_BINARY_DOUBLE TO_BINARY_FLOAT TO_CHAR (character) TO_CHAR (datetime) TO_CHAR (number) TO_CLOB TO_DATE TO_DSINTERVAL TO_LOB TO_MULTI_BYTE TO_NCHAR (character) TO_NCHAR (datetime) TO_NCHAR (number) TO_NCLOB TO_NUMBER TO_DSINTERVAL TO_SINGLE_BYTE TO_TIMESTAMP TO_TIMESTAMP_TZ TO_YMINTERVAL TO_YMINTERVAL TRANSLATE... USING UNISTR

Példa DECLARE start_time CHAR(5); finish_time CHAR(5); elapsed_time NUMBER(5); BEGIN SELECT TO_CHAR(SYSDATE,'SSSSS') INTO start_time FROM sys.dual; -- Feldolgozás SELECT TO_CHAR(SYSDATE,'SSSSS') INTO finish_time FROM sys.dual; elapsed_time := finish_time - start_time; DBMS_OUTPUT.PUT_LINE ('Elapsed time: ' TO_CHAR(elapsed_time)); END; /