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

5871 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 egydimenziós listáját lehetetett létrehozni és tárolni egy adott tábla oszlopban. A PL/SQL azonban támogatja az adatok kétdimenzió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ázis-kezelő 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 TDBGrid 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ának elemeit úgy jeleníthetjük meg az alsó táblában, hogy a ComboBox kontrolban kiválasztjuk a kívánt ID értéket, majd a ’Lekérdezés’ feliratú gombra kattintunk. 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.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 64. 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 |