User Defined Type (UDT) adattípusok az Oracle 10g-ben ----------------------------------------------------- Kollekció: ---------- Dinamikus tömb és beágyazott tábla típusú oszlopok feltöltése adatokkal ----------------------------------------------------------------------- Amikor magunk soroljuk fel az adatokat, akkor ezt megtehetjük a konstruktor függvény neve után. Ha azonban egy lekérdezés adatait szeretnénk beszúrni, akkor a lekérdezés eredményéből tömb típust illetve dinamikus tömb típust kell létrehoznunk. Erre jó a CAST függvény, ami típusátalakítást végez. Pl. SELECT CAST(hiredate AS VARCHAR2(15)), CAST(sal AS VARCHAR2(10)) FROM emp; Dinamikus tömb és beágyazott tábla típust is létrehozhatunk a CAST(COLLECT()) és a CAST(MULTISET()) segítségével, lásd az alábbi példát. CREATE OR REPLACE TYPE v30_var AS VARRAY(20) OF VARCHAR2(30); CREATE OR REPLACE TYPE v30_tab AS TABLE OF VARCHAR2(30); CREATE TABLE tomb_proba(azon NUMBER(4), nevek_var v30_var, nevek_nt v30_tab) NESTED TABLE nevek_nt STORE AS v30_ntab; INSERT INTO tomb_proba(azon, nevek_var) SELECT 1, CAST(COLLECT(ename) AS v30_var) FROM emp WHERE sal > 2500; INSERT INTO tomb_proba(azon, nevek_nt) SELECT 2, CAST(MULTISET(SELECT ename FROM emp WHERE sal > 2000) AS v30_tab) FROM dual; Beágyazott táblára használható függvények (néhány dinamikus tömbre is működik). CARDINALITY - számosságot adja vissza SELECT CARDINALITY(resztvevok) FROM projekt2; MULTISET EXCEPT [ALL | DISTINCT] MULTISET UNION [ALL | DISTINCT] MULTISET INTERSECT [ALL | DISTINCT] Példák: SELECT CAST(t1.nevek_var AS v30_tab) MULTISET INTERSECT t2.nevek_nt FROM tomb_proba t1, tomb_proba t2 WHERE t1.azon=1 AND t2.azon=2; -------------------------------------------------- V30_TAB('JONES', 'BLAKE', 'SCOTT', 'KING', 'FORD') SELECT CAST(t1.nevek_var AS v30_tab) MULTISET UNION DISTINCT t2.nevek_nt FROM tomb_proba t1, tomb_proba t2 WHERE t1.azon=1 AND t2.azon=2 ----------------------------------------------------------- V30_TAB('JONES', 'BLAKE', 'SCOTT', 'KING', 'FORD', 'CLARK') SELECT t2.nevek_nt MULTISET EXCEPT CAST(t1.nevek_var AS v30_tab) FROM tomb_proba t1, tomb_proba t2 WHERE t1.azon=1 AND t2.azon=2 ----------------- V30_TAB('CLARK') Beágyazott táblákra is lehet indexeket, constrainteket létrehozni, lehet kombinálni a beágyazott, partícionált, index-szervezett tulajdonságokat, de azért vannak ezekre vonatkozó korlátozások. ... stb. a többit -> lásd a doksiban (elég azt tudni, ami ebben az irományban van :))