DBMS-LOB

Das PL/SQL-Paket DBMS_LOB umfaßt Prozeduren und Funktionen zur Speicherung, Verwaltung und zum Auslesen von BLOB, CLOB, NCLOB und BFILE-Daten.

Folgende Routinen stehen u.a. zur Verfügung:

Funktion/ProzedurFunktionalität
APPENDHängt die Inhalte eines LOB-Werts an einen anderen LOB-Wert an (konkateniert)
CLOSESchließt einen zuvor geöffneten internen oder externen LOB
COMPAREVergleicht zwei LOB-Werte oder Teile davon miteinander
CONVERTOCLOBLiest Character-Daten aus einer Quell-CLOB- oder NCLOB-Instanz, konvertiert die Character-Daten in die vorgegebenen Zeichen und hängt die konvertierten Daten im binären Format an eine Ziel-BLOB-Instanz an
COPYKopiert den gesamten LOB oder bestimmte Teile in ein Ziel-LOB
CREATETEMPORARYLegt einen temporären BLOB- oder CLOB-Index Wert an
ERASELöscht den LOB ganz oder teilweise
FILECLOSESchließt die LOB-Datei
FILECLOSEALLSchließt alle zuvor geöffneten Dateien
FILEEXISTSPrüft, ob die LOB-Datei vorhanden ist
FILEGETNAMELiest den Dateinamen und den Verzeichnisnamen
FILEISOPENPrüft, ob die LOB-Datei mithilfe des Eingabe-BFILE-Locator geöffnet wurde
FILEOPENÖffnet eine LOB-Datei
FREETEMPORARYGibt das temporäre BLOB oder CLOB im standardmäßigen temporären Tablespace des Benutzers frei
GET_STORAGE_LIMITLiefert das Speicherlimit für LOBS in Ihrer Datenbankkonfiguration
GETCHUNKSIZELiefert den Speicherplatz des LOB-Wertes
GETLENGTHHolt die Länge des LOB-Wertes ab
INSTRLiefert die Position eines Musters im LOB
ISOPENPrüft, ob das LOB bereits mithilfe des Eingabe-Locator geöffnet wurde
ISTEMPORARYPrüft, ob der Locator auf einen temporären LOB zeigt
LOADBLOBFROMFILELädt BFILE-Daten in einen internen BLOB
LOADCLOBFROMFILELädt BFILE-Daten in einen internen CLOB
LOADFROMFILELädt BFILE-Daten in einen internen LOB
OPENÖffnet ein LOB (intern, extern oder temporär) im angegebenen Modus
READLiest die Daten des LOB ab der vorgegebenen Position
SUBSTRLiefert Teile des LOB-Werets ab der vorgegebenen Position
TRIMKürzt den LOB-Wert auf die vorgegebene Länge
WRITESchreibt die Daten ab der vorgegebenen Position in das LOB
WRITEAPPENDSchreibt einen Puffer an das Ende des LOB

Beispiel:

   CREATE PROCEDURE SetBewerbung (InputName IN VARCHAR2) 
   IS   Textdaten   CLOB;
        Datei       BFILE;
   BEGIN
	SELECT Bewerbung, BewerbungDatei
         INTO  textdaten, datei
         FROM  Personen 
         WHERE Name = InputName for update;
        DBMS_LOB.FILEOPEN (datei, DBMS_LOB.FILE_READONLY) ;
        DBMS_LOB.LOADFROMFILE (textdaten, datei, DBMS_LOB.GETLENGTH(datei));
        DBMS_LOB.FILECLOSE(datei);
        UPDATE Personen  SET  Bewerbung = textdaten
         WHERE Name = InputName;
   END;

Quellen:

  • Faeskorn-Woyke, Heide; Bertelsmeier, Birgit; Riemer, Petra; Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
  • Feuerstein, Steven, Pribyl. Bill: "Oracle PL/SQL Programming", O'Reilly, 2009, ISBN-13: 978-0596514464
  • Oracle® Database SQL Language Reference 11g Release 1 (11.1) in http://docs.oracle.com/cd/B28359_01/server.111/b28286/toc.htm
  • Oracle® Database PL/SQL Language Reference 11g Release 2 (11.2) in http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/toc.htm
  • Saurabh, Gupta: "Oracle Advanced PL/SQL Developer Professional Guide", Packt Publishing Limited, 2012, ISBN 978-1-84968-722-5

Kategorie: Oracle-PL-SQL, D