HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Adattárolás beágyazott tábla-típusú oszlopokban


Oracle adatbázis-kezelés 10. rész

Példaprogram letöltése

8940 bájt

Legutóbbi két cikkünkben megismerhettük, hogyan lehet adatokat tárolni tömb típussal rendelkező oszlopokban. Segítségével adatok egy-dimenziós listáját lehetetett létrehozni és tárolni egy adott tábla oszlopban. A PL/SQL azonban támogatja az adatok két-dimenziós egységekben való tárolását is. Sorozatunknak ebben a számában megismerkedhetünk a beágyazott táblákkal, melyek megsokszorozzák adatbázisunk adattároló képességét.

A példaprogram használata előtt létre kell hozni egy SOUSER sémát az Oracle adatbázis rendszerünkben, és fel kell ruházni DBA jogosultsággal. A sémába bejelentkezve le kell viszont futtatni a mellékelt Oracle10.sql nevű parancsállományt a hivatkozott további objektumok létrehozásához.
A beágyazott tábla lehetősége biztosítja a tábla a táblában funkcionalitást. Szigorúan relációs elven működő adatbáziskezelő rendszerekben adatok ilyetén tárolása csak két táblával volna lehetséges, azonban az Oracle-rendszer feloldja ezt az adattárolási korlátot.
A beágyazott tábla rekordok olyan együttese, melyek egy másik (befogadó) tábla soraiban jelennek meg. A beágyazott tábla speciális típussal rendelkezik, melyet mi deklarálhatunk. A típus konstruktorát használva vihetünk be elemeket a beágyazott táblába. Ebben a cikkben a beágyazott tábla elemeinek lekérdezésével foglalkozunk, melyet egy speciális formával rendelkező SELECT utasítással teszünk meg.
A mellékelt parancsállományt lefuttatva hozhatjuk létre a beágyazott tábla típusának deklarációját, a beágyazott táblát, valamint a befogadó táblát. A példában egy olyan táblát hozunk létre, melynek ID-vel azonosított rekordjaiban, a PS oszlopban tároljuk a beágyazott táblát, mely CODE azonosítóval rendelkező típusneveket tartalmaz.
A típus deklarációja a következőképpen fest:
CREATE OR REPLACE TYPE PLANE_INFO AS OBJECT
(
  CODE NUMBER(4),
  PLANE_TYPE VARCHAR2(20)
);
Látható, hogy egy objektumot hoztunk létre (tágabban értelmezve egy osztályt), mely két tag objektumot tartalmaz.
A deklarációt az Oracle DBA Studio segédprogramjában az Object Type csomópont alatt találjuk a SOUSER séma elemeit fellapozva. A program a „%winroot%:\oracle\ora81\bin\oemapp.bat dbastudio” helyről és paraméterezéssel indítható.
Létrehozunk egy ilyen típussal rendelkező változót, mely a PLANES nevet viseli:
CREATE TYPE PLANES AS TABLE OF PLANE_INFO;
Ez is megtalálható a DBA Studio Table Type csomópontban, a SOUSER sémában.
Végül létrehozzuk a fizikai táblát, melynek ’PS’ nevű oszlopa lesz beágyazott tábla típusú:
CREATE TABLE AIRPLANES
(
  ID NUMBER(2),
  PS PLANES
)
NESTED TABLE PS STORE AS PLANES_TABLE;
A példaalkalmazás Form-ján két DataGrid kontrolban jelenítjük meg a fizikai tábla, valamint az adott sorban megtalálható beágyazott tábla adatait. A felső táblázat egy sorára kattintva az alsó táblában a beágyazott tábla adatai jelennek meg. Amennyiben egy CODE értéket (mellyel a beágyazott tábla rekordjait azonosítjuk) is megadunk a TextBox kontrolban, és ez egy létező érték a beágyazott táblában, akkor a megjelenő adathalmazt szűkíthetjük.
Ahhoz, hogy lekérdezéseket hajtsunk végre a fizikai táblában, a SELECT utasítást sajátos módon kell fölépítenünk. A PL/SQL által támogatott SELECT utasítás a következőképpen adható meg, amennyiben – mint példánkban – a fizikai tábla ID és PS oszlopokkal, a beágyazott tábla (PS oszlopban) CODE és PLANE_TYPE oszlopokkal rendelkezik, és mi valamennyi rekord valamennyi értékére kíváncsiak vagyunk:
SELECT * FROM THE
(SELECT PS FROM AIRPLANE)
A THE kulcsszó alkalmazásával jelezzük a parancsértelmezőnek, hogy a zárójelben található lekérdezés oszlopa beágyazott tábla típussal rendelkezik.
Természetesen az ilyen típusú adatokat ki lehet nyerni rekordonként is. Ekkor meg kell adni a megfelelő szűkítő értelmű kulcsszavakat. Az ID = 10 azonosítóval rendelkező beágyazott tábla összes rekordját a következő SQL utasítással kaphatjuk meg:
SELECT * FROM THE
(SELECT PS
 FROM AIRPLANE
 WHERE ID = 10)
Ha csak egy bizonyos CODE (például CODE = 1001) értékkel rendelkező beágyazott tábla rekordot akarunk megjeleníteni, akkor a következő utasítást adhatjuk meg:
SELECT * FROM THE
(SELECT PS
 FROM AIRPLANE
 WHERE ID = 10)
WHERE CODE = 1001
A mellékelt példában a fent megadott két utasítással jelenítjük meg az adott rekord beágyazott táblájában megtalálható sorokat, valamint ezek valamilyen szempont szerinti részhalmazát.

Cikksorozat

#IDKategóriaCikk címeSorozat
2535C#Oracle adatbázis-elérés alapjai1. rész
2546C#SQL utasítások végrehajtása2. rész
2557C#Tárolt eljárások és függvények fejlesztése3. rész
2565C#Csomagok fejlesztése4. rész
2573C#Adatbázis triggerek fejlesztése5. rész
2581C#Kivételek kezelése PL/SQL-ben6. rész
3276C#Kurzorok deklarálása PL/SQL-ben7. rész
3297C#Tömb adattípus létrehozása és kezelése PL/SQL-ben8. rész
3326C#Adatbevitel tömb-adattípussal rendelkező oszlopokba9. rész
3357C#Adattárolás beágyazott tábla-típusú oszlopokban10. rész
3388C#Adatok beszúrása beágyazott táblákba11. rész
3418C#Index létrehozása PL/SQL-ben12. rész
3444C#Szekvenciák használata13. rész
3488C#Adatok betöltése állományokból14. rész
1765DelphiOracle adatbázis-elérés alapjai15. rész
1774DelphiSQL utasítások végrehajtása16. rész
1784DelphiTárolt eljárások és függvények fejlesztése17. rész
1794DelphiCsomagok fejlesztése18. rész
1803DelphiAdatbázis triggerek fejlesztése19. rész
1815DelphiKivételek kezelése PL/SQL-ben20. rész
3256DelphiKurzorok deklarálása PL/SQL-ben21. rész
3287DelphiTömb adattípus létrehozása és kezelése PL/SQL-ben22. rész
3318DelphiAdatbevitel tömb-adattípussal rendelkező oszlopokba23. rész
3348DelphiAdattárolás beágyazott tábla típusú oszlopokban24. rész
3377DelphiAdatok beszúrása beágyazott táblákba25. rész
3408DelphiIndex létrehozása PL/SQL-ben26. rész
3436DelphiSzekvenciák használata27. rész
3467DelphiAdatok betöltése állományokból28. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 86. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |