ORACLE的BFILE类型如何通过DELPHI直接读取

dickeybird888 2007-08-04 10:22:55
我在oracle中建立了BFILE类型的东西,问
如何用DELPHI直接读取BFILE的对应的东西
...全文
308 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongqi162 2007-08-29
  • 打赏
  • 举报
回复
写一个函数
--get blob
create or replace function GetBlob( aBfileId in varchar2 ) return blob
is
bfile_name BFILE;
aLob blob;
begin
select cBfile into bfile_name from TBfile where cid=aBfileId;
dbms_lob.createtemporary(aLob,true);
dbms_lob.fileopen(bfile_name);
dbms_lob.loadfromfile(aLob, bfile_name, dbms_lob.getlength(bfile_name));
dbms_lob.fileclose(bfile_name);
return aLob;
end;

---
select GetBlob('0010') from dual;
blueplusplus 2007-08-23
  • 打赏
  • 举报
回复
都是高手啊,学习
jin20000 2007-08-23
  • 打赏
  • 举报
回复
路过,学习!
dickeybird888 2007-08-22
  • 打赏
  • 举报
回复
谁知道啊!
dickeybird888 2007-08-22
  • 打赏
  • 举报
回复
我按你的方式实验了,可DELPHI怎么调用啊
hongqi162 2007-08-08
  • 打赏
  • 举报
回复

create directory lobdir as 'd:\tempLob';

create table Tblob(col BLOB);
create table TBfile( cid varchar2(100),cBfile bfile);

insert into TBfile values( '0010',bfilename( 'LOBDIR', 'lob.jpg' ) );

--get blob
create or replace procedure GetBlob( aBfileId in varchar2, aLob out Blob )
is
bfile_name BFILE;
begin
select cBfile into bfile_name from TBfile where cid=aBfileId;
dbms_lob.fileopen(bfile_name);
dbms_lob.loadfromfile(aLob, bfile_name, dbms_lob.getlength(bfile_name));
dbms_lob.fileclose(bfile_name);
end;
hongqi162 2007-08-08
  • 打赏
  • 举报
回复
也不是很麻烦,我写了一个你参考以下


create directory lobdir as 'd:\tempLob';

create table Tblob(col BLOB);
create table TBfile( cid varchar2(100),cBfile bfile);

insert into TBfile values( '0010',bfilename( 'LOBDIR', 'lob.jpg' ) );
--get blob
create or replace procedure GetBlob( aBfileId in varchar2, aLob out Blob )
is
bfile_name BFILE;
begin
select cBfile into bfile_name from TBfile where cid=aBfileId;
dbms_lob.fileopen(bfile_name);
dbms_lob.loadfromfile(aLob, bfile_name, dbms_lob.getlength(bfile_name));
dbms_lob.fileclose(bfile_name);
end;
dickeybird888 2007-08-07
  • 打赏
  • 举报
回复
把.net的那个类转化为DELPHI的类,就应该是可以用的
他那个类没有看见原代码啊!真郁闷!
dickeybird888 2007-08-07
  • 打赏
  • 举报
回复
那有没有其他的方法让他更快速呢?
dickeybird888 2007-08-07
  • 打赏
  • 举报
回复
等等把,我在找找,看自己写一个,到时候贡献出来
hongqi162 2007-08-07
  • 打赏
  • 举报
回复
要是让你看到源码那就不是microsoft了,自己封装一个吧
dovelee 2007-08-07
  • 打赏
  • 举报
回复
等待答案....
dickeybird888 2007-08-06
  • 打赏
  • 举报
回复
你用过.NET 吗,我见过.NET 中就有页面直接处理BFILE的方法.
hongqi162 2007-08-06
  • 打赏
  • 举报
回复
BFile类型实际上保存的是关联指定文件的信息,oracle只负责管理关联信息,不负责管理相应的文件,如果你要处理Bfile类型只能通过DBMS_LOB或OCI,慢的原因有很多的,数据库服务器的性能也占一部分
dickeybird888 2007-08-06
  • 打赏
  • 举报
回复
你说的方法,我用数据库实现了,但前台执行的太慢了,我转化的过程都是用存储过程实现的,
但在前台转化BLOB为图片,或者是DOC文件的时候都很慢啊,有什么更快的方法也行啊
dickeybird888 2007-08-06
  • 打赏
  • 举报
回复
你说的方法我知道,我也用过,但那样的话首先你要先转化为BLOB数据,然后在 用DELPHI把BLOB的数据进行读取,速度上的确很慢啊,
我是想问有没有从ORACLE直接读BFILE的方法啊
brightyang 2007-08-06
  • 打赏
  • 举报
回复
帮顶
hongqi162 2007-08-06
  • 打赏
  • 举报
回复
你可以使用DBMS_LOB.LOADFROMFILE包将BFILE读入到blob中,然后以blob形势返回
happyboy66 2007-08-06
  • 打赏
  • 举报
回复
看来不能直接读。只能间接读取
qgcsoft 2007-08-06
  • 打赏
  • 举报
回复
里面已经说的很清楚了:http://msdn2.microsoft.com/zh-cn/library/y2bzf04s(VS.80).aspx
-------------------------------------------------------------------
加载更多回复(3)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧