2015. szeptember 21., hétfő

LOB tartalmának kiírása

Bemelegítés

Internal LOB (az adatbázisban lévő LOB) például egy tábla mezője. Két típusa van, Persistent és Temporary. Persistent LOB ami a tábla sorában van az adatbázisban. Temporary LOB akkor jön létre, amikor LOB típust definiálunk a PL/SQL programban. A session idejéig létezik. Temporary LOB persistent LOB lesz, amikor kiíródik a tábla egy sorába.

External LOB, amikor az adatot az operációs rendszer fájlrendszerén tároljuk, az adatbázis táblaterén kívül. Ennek SQL adattípusa a BFILE, csak olvasható.

Egy LOB "példánynak" van egy lokátora és egy értéke. A LOB lokátor mutatja meg a helyet, ahol a LOB értéke van fizikailag. A LOB érték maga a LOB adat. Amikor egy PL/SQL alkalmazásban LOB adattípust rendelünk egy változóhoz, valójában csak egy lokátort rendeltünk hozzá. Ezen a lokátoron keresztül tud hozzáférni a LOB adathoz a DBMS_CSOMAG.

Perzisztens LOB beállítás

A tábladefinícióban figyelembe kell venni, hogy miként állítjuk be alapértelmezésként a LOB mezőket. El kell dönteni, hogyan inicializáljuk a LOB-ot. NULL vagy Empty

Ha NULL-ként inicializáljuk, akkor egy új sor bekerülésével, amikor nincs LOB adat, vagy amikor lekérdezzük ezt a sort és szintén nincs LOB adat, akkor ez a mező null-t fog tartalmazni. Fontos, hogy ilyenkor nem használhatjuk a DBMS_LOB csomagot ezzel a mezővel, hanem sima SQL UPDATE parancsot kell használni adat módosításra.

Ha Empty-ként van inicializálva (ajánlott beállítás), akkor a select LOB locatort ad vissza. A LOB locator egy mutató a LOB adatra. INSERT esetén, ha nem teszünk semmit a mezőbe, akkor az SQL EMPTY_LOB() függvényt kell használni értékként. Ezen a mezőn használhatjuk a DBMS_LOB PL/SQL csomagot írásra, olvasásra stb. 

INSERT esetében szükség lehet a LOB lokátor megszerzésére, amit legegyszerűbben a RETURNING paranccsal kaphatunk vissza:

DECLARE
  lob_loc blob;
BEGIN
  insert into a_table ( blob_col ) 
  values ( empty_blob() ) returning blob_col into lob_loc
END;
/

Hasznos csomagok


DBMS_LOB - tudja olvasni és módosítani a BLOB-okat. Anonym PL/SQL-ből történő hívás esetében az aktuális felhasználó jogaival fut. LOB lokátoron dolgozik.

UTL_RAW - RAW típus kezelése, konvertálása. 

Források

Nincsenek megjegyzések:

Megjegyzés küldése