wstawianie danych BLOB (np. zdjęć) do bazy

Co jest potrzebne do wstawiania zdjęć

Do wstawiania grafiki będziemy używali funkcji z pakietu DBMS_LOB.

Jak wygląda tabelka ze zdjęciami?

SQL> desc username.photos;
 Nazwa                           Null?    Typ
 ------------------------------- -------- ----
 FOTO                                     BLOB
 PESEL                                    VARCHAR2(11)

Przykładowa procedura wstawiająca zdjęcie

Procedura wstawia zdjęcie danej osoby. Zakładamy że nazwą zdjęcia jest pesel (bez rozszerzenia). Na podstawie numeru pesel znajdowana jest właściwa osoba w bazie. Należy zastąpić USERNAME nazwą użytkownika który ma posiadać procedury i w schemacie którego leżą potrzebne tabelki.

 CREATE OR REPLACE PROCEDURE USERNAME.wstaw_zdjecie
 (pesel_in NUMBER)
 IS

 nazwa_zdjecia VARCHAR(20);
 bl BLOB;
 bf BFILE;
 filenum INTEGER;

 BEGIN
 nazwa_zdjecia:=TO_CHAR(pesel_in); 

 INSERT INTO username.photos(pesel,foto)
 VALUES (pesel_in,empty_blob());

 SELECT foto INTO bl
 FROM username.photos
 WHERE pesel= pesel_in;

 bf:=bfilename('ZDJECIA',nazwa_zdjecia);

 DBMS_LOB.fileopen(bf, Dbms_Lob.File_Readonly);

Gdzie muszą się znajdować zdjęcia?

Należy pamiętać że zdjęcia lub inne grafiki muszą być na lokalnym dysku serwera