- 论坛徽章:
- 0
|
请教:如何写存入blob类型的sql语句?急用!谢谢!
你把目录大写试一下...
呵呵,oracle挺有趣的,比如你通过表名查询时条件中如果表名不是大写,查不到结果的...
SQL>; show user
USER 为"SCOTT"
SQL>; create or replace directory myphoto as 'e:\photo';
目录已创建。
//目录小写的情况
SQL>; declare
2 l_blob blob;
3 l_bfile bfile;
4 begin
5 insert into demo values ( 2, empty_blob() )
6 returning theBlob into l_blob;
7
8 l_bfile:= bfilename('myphoto', 'girl.jpg' );
9 dbms_lob.fileopen(l_bfile);
10
11 dbms_lob.loadfromfile( l_blob, l_bfile,
12 dbms_lob.getlength(l_bfile));
13
14 dbms_lob.fileclose(l_bfile);
15 end;
16 /
declare
*
ERROR 位于第 1 行:
ORA-22285: 对不存在的目录或文件进行FILEOPEN操作
ORA-06512: 在"SYS.DBMS_LOB", line 504
ORA-06512: 在line 9
//目录大写的情况
SQL>; declare
2 l_blob blob;
3 l_bfile bfile;
4 begin
5 insert into demo values ( 2, empty_blob() )
6 returning theBlob into l_blob;
7
8 l_bfile:= bfilename('MYPHOTO', 'girl.jpg' );
9 dbms_lob.fileopen(l_bfile);
10
11 dbms_lob.loadfromfile( l_blob, l_bfile,
12 dbms_lob.getlength(l_bfile));
13
14 dbms_lob.fileclose(l_bfile);
15 end;
16 /
PL/SQL 过程已成功完成。
//检查结果,我那张图片(girl.jpg)是159 KB (163,568 字节)的,通过检查插入后的长度,可知,正确保存在数据库中了.
SQL>; select dbms_lob.getlength(THEBLOB) from demo where id=2;
DBMS_LOB.GETLENGTH(THEBLOB)
---------------------------
163568 |
|