Oracle系列:图片的存储
来源:互联网 发布:删除的数据怎么恢复 编辑:程序博客网 时间:2024/04/28 01:17
Oracle系列:图片的存储
一:什么是大对象,大对象基本操作?
参见我的BLOG:Oracle系列:LOB大对象处理
http://blog.csdn.net/qfs_v/archive/2008/05/21/2464599.aspx
二,图片的存储或二进制文件的存储
1,先插入普通数据,遇到大对象列使用empty_blob()构造空的指针。
例子:
/*
conn scott/tiger;
Create TableSpace ts5_21;
*/
Create Table MyLob
(
no number(8) primary key,
fname varchar2(30),
myfile blob
)
Lob (myfile) Store As
(
Tablespace ts5_21
Chunk 15K
Disable Storage In Row
);
Insert Into MyLob Values(1,'IMG_0210.JPG',empty_blob());
2,创建逻辑目录MYDIR
Create Directory MYDIR As 'E:/Oracle';
3,声明一个BLOB类型变量,使用select into 语句让其指向到empty_blob()构造空的指针所指向的存储空间
Select myfile Into BLOB类型变量 From myLob Where no = 1 FOR UPDATE;
4,声明一个BFile类型变量,关联逻辑目录和物理目录文件,使用 BFileName() 将其指向到待存储的文件。
BFile类型变量 := BFileName('MYDIR','IMG_0210.JPG');
5,使用DBMS_LOB.open()方法将BFile类型变量所指向的文件打开
DBMS_LOB.Open(BFile类型变量);
6,使用DBMS_LOB.loadfromfile()方法将BFile类型变量所指向的文件读入到BLOB类型变量所指向的存储空间
DBMS_LOB.LoadFromFile(BLOB类型变量,BFile类型变量,DBMS_LOB.getlength(BFile类型变量));
7,使用DBMS_LOB.close()方法将bfile的变量所指向的文件关闭
DBMS_LOB.Close(BFile类型变量);
8,提交事务
Commit;
例子;
Declare
varB blob;
varF Bfile;
Begin
select myfile into varB from myLob where no = 1 for update;
varF := bfileName('MYDIR','IMG_0210.JPG');
DBMS_LOB.open(varF);
DBMS_LOB.loadfromfile(varB,varF,DBMS_LOB.getlength(varF));
DBMS_LOB.close(varF);
commit;
End;
--查看文件大小
Declare
varB blob;
Begin
select myfile into varB from myLob where no = 1;
DBMS_OUTPUT.PUT_LINE('长度为: '||DBMS_LOB.getlength(varB));
End;
例子:创建过程存储图片或二进制文件
Create Or Replace Procedure setBLOB(vFileName varchar2)
As
varF bfile;
varB blob;
vno number(8);
Begin
varF := BFilename('MYDIR',vFileName);
DBMS_LOB.Open(varF);
select max(no) into vno from myLob;
if vno is null then
vno := 1;
else
vno := vno + 1;
end if;
insert into myLob values(vno,vFileName,empty_blob());
select myFile into varB from myLob where no = vno for update;
DBMS_LOB.loadfromfile(varB,varF,DBMS_LOB.getlength(varF));
DBMS_LOB.close(varF);
commit;
End;
--执行过程
EXEC setBLOB('IMG_0210.JPG');
--查看文件大小
Declare
varB blob;
Begin
select myfile into varB from myLob where no = 2;
DBMS_output.put_line('长度为: '||DBMS_LOB.getlength(varB));
End;
下一文:Oracle系列:SQL
- Oracle系列:图片的存储
- Oracle系列:图片的存储
- oracle 存储图片的存储过程[转]
- 将 图片 文件存储到 Oracle 的存储过程
- Oracle中读取&&存储blob类型存储的图片(待用)
- Oracle 数据库存储图片
- [oracle]中存储图片
- Oracle 存储图片
- oracle存储图片
- 将图片文存储到Oracle的存储过程
- php对oracle图片数据的存储和读取
- 将图片文存储到Oracle的存储过程
- 使用存储过程实现oracle存图片的方法
- Oracle 存储过程存取图片
- Oracle 存储过程存取图片
- Oracle 存储过程存取图片
- 数据库的存储系列———将图片存储到数据库
- 如何把系列图片存储为.mat
- 测试文章
- 测试文章
- AJAX 资源收藏
- 值得关注----NetBPM工作流
- C#2.0新特性—迭代器
- Oracle系列:图片的存储
- NetBPM工作流Q&A(不断更新)
- 走出软件作坊:三五个人十来条枪 如何成为开发正规军(二)
- 全国哀悼日 网站变灰装(附代码)
- 关于堆和栈的区别
- 第一次
- 数据库自动网络备份
- HTTP MIME类型即HttpResponse.ContentType属性值列表
- 存储过程编写经验和优化措施