Regarding a post on oracle forum bout how to store image files in database using insert command. Actually, I don’t know it is running well or not cause I haven’t test it yet but I just kept this for documentation. Sometimes I’ll explore it when I needed. Please give me a notes if You had already try it.
Here is the script.
CREATE TABLE MY_IMAGE_TABLE (
ID NUMBER,
NAME VARCHAR2(20),
IMAGE BLOB);
CREATE OR REPLACE DIRECTORY IMAGES AS ‘/tmp’;
GRANT READ, WRITE ON DIRECTORY IMAGES TO PUBLIC;
CREATE OR REPLACE PROCEDURE load_file_to_my_table (p_file_name IN MY_IMAGE_TABLE.NAME%TYPE) AS
v_bfile BFILE;
v_blob BLOB;
BEGIN
INSERT INTO MY_IMAGE_TABLE (id, name, image)
VALUES (1, p_file_name, empty_blob())
RETURN doc INTO v_blob;
v_bfile := BFILENAME(‘IMAGES’, p_file_name);
Dbms_Lob.Fileopen(v_bfile, Dbms_Lob.File_Readonly);
Dbms_Lob.Loadfromfile(v_blob, v_bfile, Dbms_Lob.Getlength(v_bfile));
Dbms_Lob.Fileclose(v_bfile);
COMMIT;
END;