没怎么用过ORACLE,想往数据库中插入一个图片,字段是BLOB类型,网上说不能直接插入,要先插入个空值,然后再更新,因为表中的字段没有规律,我想在一个存储过程中完成插入和更新,具体应该如何实现?

解决方案 »

  1.   

    SQL> CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);表已创建。SQL> CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\Oracle'; --图片目录目录已创建。SQL> CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS  2    F_LOB BFILE;  3    B_LOB BLOB;  4  BEGIN  5    INSERT INTO IMAGE_LOB (T_ID, T_IMAGE)  6      VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;  7    F_LOB:= BFILENAME ('IMAGES', FILENAME);  8    DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);  9    DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,10    DBMS_LOB.GETLENGTH (F_LOB));11    DBMS_LOB.FILECLOSE (F_LOB);12    COMMIT;13  END;14  /过程已创建。SQL>-- 示例SQL> EXEC IMG_INSERT('1','f_TEST.jpg');