我的过程是这样的:
第一步:建表
create table MY_USER_INFO
(
emp_id NUMBER(10) not null,
name VARCHAR2(64) not null,
photo BLOB,
photo_name VARCHAR2(15)
)
第二步:建目录 CREATE OR REPLACE DIRECTORY IMAGES AS 'e:\picture';
第三步:建存储过程
CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS
F_LOB BFILE;
B_LOB BLOB;
BEGIN
iNSERT INTO my_user_info (photo_name, photo)
VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
--插入空的blob
F_LOB:= BFILENAME ('IMAGES', FILENAME);
--获取指定目录下的文件
DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONLY);
--以只读的方式打开文件
DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB));
--传递对象
DBMS_LOB.FILECLOSE (F_LOB);
--关闭原始文件
COMMIT;
END;
/ 其中,出现的问题就是:创建的过程有编译错误,我怎么也看不到错误的出处。请高手讨教!
另外,请帮我分析下:对于较大数据对象的存储,在数据库中是如何进行的?给分予以感谢!!!
第一步:建表
create table MY_USER_INFO
(
emp_id NUMBER(10) not null,
name VARCHAR2(64) not null,
photo BLOB,
photo_name VARCHAR2(15)
)
第二步:建目录 CREATE OR REPLACE DIRECTORY IMAGES AS 'e:\picture';
第三步:建存储过程
CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS
F_LOB BFILE;
B_LOB BLOB;
BEGIN
iNSERT INTO my_user_info (photo_name, photo)
VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
--插入空的blob
F_LOB:= BFILENAME ('IMAGES', FILENAME);
--获取指定目录下的文件
DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONLY);
--以只读的方式打开文件
DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB));
--传递对象
DBMS_LOB.FILECLOSE (F_LOB);
--关闭原始文件
COMMIT;
END;
/ 其中,出现的问题就是:创建的过程有编译错误,我怎么也看不到错误的出处。请高手讨教!
另外,请帮我分析下:对于较大数据对象的存储,在数据库中是如何进行的?给分予以感谢!!!
如果是sqlplus直接刷,你执行show errors就能看到错误 ;
如果是用其它的工具,看看下方有没有被隐藏的小窗口,显示错误的。。
iNSERT INTO my_user_info (photo_name, photo)
VALUES (TID,EMPTY_BLOB ()) RETURNING photo INTO B_LOB;