Le funzioni dell pacchetto DBMS_LOB in Oracle


I campi di tipo LOB in Oracle non possono essere trattati come delle stringhe, un esmpio classico non si può utilizzare la funzione lenght(campoBLOB) per vedere la dimensione del campo, a tal proposito oracle viene fornito con un pacchetto le cui funzioni vado a spiegare di seguito:

Funzione COMPARE:
Permette di confrontare due campi di tipo lob, essa restituisce 0 se in due combaciano. Una restrizione per questa funzione √® l’obbligo di confrontare soltanto i campi dello stesso tipo, i CLOB con i CLOB, i BLOB con BLOB ed i BFILE con i BFILE.

dbms_lob.compare(campo_1, campo_2, quanti_byte, offSet_1, offSet2);

Funzione COPY:
Copia il contenuto di un campo lob, o parte di esso, in un altro. Si può specificare lo scostamento iniziale sia del sorgente che del destinatario, è inoltre possibile indicare quanti byte copiare.

DBMS_LOB.COPY(destinazione, sorgente, quanti_byte, dest_offset, sorg_offset);

Funzione FILEEXISTS:
Ci si pu√≤ immaginare a che cosa serva, ma non √® niente di pi√Ļ sbagliato, infatti questa funzione serve a controlare su un puntatore ad un file punta ad un file effettivamente esistente.

dbms_lob.fileexists(file_loc)

dove file_loc è un putantore (locator) al file.

Funzione FILEISOPEN:
Stesse modalit√† della precedente, controlla che un puntatore ad un file sia aperto, se fosse chiuso il collegamento non √® detto che il file non sia aperto da un’altro puntatore.

dbms_lob.fileisopen(file_loc)

Funzione GETLENGHT:

Restituisce il numero di byte di cui è composto il valore inserito nel campo LOB

select dbms_lob.length(campo_lob) from tabella

Funzione INSTR:
Molto simile alla funzione instr per le stringhe impementata in SQL standard, con la differenza che maneggia i file di tipo LOB. Pu√≤ essere specificato il punto di partenza (in byte) da cui cominciare a cercare e permette anche di indicare quale delle occorrenze, cio√® ad esempio voglio sapere in che posizione si trova la 3 volta che compare la parola “aiuto” nel mio campo CLOB.

select dbms_lob.instr(campo_lob,’aiuto’,0,3) from tabella

Funzione SUBSTR:
Identica a come si utilizza in SQL Standard.
La funzione substr può essere utile anche per altri scopi ad esempio per convertire un dato CLOB in formato stringa (CHAR/VARCHAR2)

SELECT DBMS_LOB.SUBSTR (campo_CLOB, 30, 1) FROM tabella

Dove il primo parametro √® il nome della colonna in formato CLOB, il secondo √® la lunghezza della stringa che vogliamo ottenere e il terzo √® l’offset da cui partiamo.

Le funzioni dell pacchetto DBMS_LOB in Oracle ultima modifica: 2006-05-05T00:00:00+00:00 da Enrico

1 Comments.

  1. Matteo Mocci

    La riga su GETLENGTH
    select dbms_lob.length(campo_lob) from tabella

    è corretta così:
    select dbms_lob.getlength(campo_lob) from tabella