免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2887 | 回复: 8
打印 上一主题 下一主题

请问如何修改和删除bfile类型的数据,谢谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-10 15:25 |只看该作者 |倒序浏览
请问如何修改和删除bfile类型的数据,
如果删除的话能直接用delete from 表 where.......吗?
修改的话可以直接用 下面的格式吗?  update表
                                     set .....
                                                            where.......
谢谢!!

论坛徽章:
0
2 [报告]
发表于 2004-05-11 07:30 |只看该作者

请问如何修改和删除bfile类型的数据,谢谢!

请各位大侠帮忙啊,我急用啊,难道没有会的吗?

论坛徽章:
0
3 [报告]
发表于 2004-05-11 13:10 |只看该作者

请问如何修改和删除bfile类型的数据,谢谢!

bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对

oracle来说是只读的,也不参与事务性控制和数据恢复

bfile的基本操作如下:


1.先在oracle数据库中下面我们建立一个目录别名,用于将文件定位指针映射到文

件系统:

create DIRECTORY 'tmpdir' AS '/tmp';
tmpdir表示逻辑目录名,'/tmp'是实际目录。 注意该目录oracle应该有读权限

然后根据需要授权
GRANT READ ON DIRECTORY bfile_dir1 TO scott;
建立一个含有bfile字段的表
create table bfiletest(id number(3), fname bfile);

2.插入数据
这里需要使用bfilename来进行bfile字段的insert 或者 update操作

  1. INSERT INTO bfiletest
  2.      VALUES (1, BFILENAME ('tmpdir', 'tmptest'));
复制代码

   bfilename的参数1是DIRECTORY名,参数2是文件名。注意:这一行中插入的是

一个指向/tmp/tmptest的文件定位指针映射,不是文件本身。

3.读取bfile
  
   通过使用dbms_lob包进行可以对bfile读入到blob/clob对象中操作(只读)

  1. CREATE OR REPLACE PROCEDURE loadLOBFromBFILE_proc IS
  2.    Dest_loc       BLOB;
  3.    Src_loc        BFILE := BFILENAME('tmpdir', 'tmptest');

  4. BEGIN
  5.     SELECT blob_col INTO Dest_loc FROM aBLOBtable
  6.        WHERE ID= 111
  7.           FOR UPDATE;

  8.    /* 如果bfile文件实际存在 */
  9.    IF (DBMS_LOB.FILEEXISTS(Src_loc) != 0)
  10.    THEN
  11.        /* 打开bfile源文件 */
  12.        DBMS_LOB.OPEN(Src_loc, DBMS_LOB.LOB_READONLY);
  13.        /* 打开目标blob: */
  14.        DBMS_LOB.OPEN(Dest_loc, DBMS_LOB.LOB_READWRITE);
  15.        /*从文件中装入 */
  16.        DBMS_LOB.LOADFROMFILE(Dest_loc, Src_loc,DBMS_LOB.GETLENGTH(Src_loc));
  17.        /* 记得关闭: */
  18.        DBMS_LOB.CLOSE(Dest_loc);
  19.        DBMS_LOB.CLOSE(Src_loc);
  20.        COMMIT;
  21.    END IF;
  22.    EXCEPTION
  23.        WHEN OTHERS THEN
  24.           DBMS_OUTPUT.PUT_LINE('Operation failed');

  25. END;
复制代码


会话能打开多少个文件有init参数SESSION_MAX_OPEN_FILES决定
文件大小由OS决定, 32位的文件系统为每个文件2gb或4gb

其它请参阅oracle联机文档.

论坛徽章:
0
4 [报告]
发表于 2004-05-11 15:52 |只看该作者

请问如何修改和删除bfile类型的数据,谢谢!

您是说bfile类型的字段存入的并不是文件本身吗?如果我存完之后把指定路径下的已经存入的这个文件删除掉了,那在数据库中的这个字段下还有这个文件的内容吗?我用asp.net调用能调用出来文件的内容吗?

论坛徽章:
0
5 [报告]
发表于 2004-05-11 16:01 |只看该作者

请问如何修改和删除bfile类型的数据,谢谢!

您是说bfile类型的字段存入的并不是文件本身吗?如果我存完之后把指定路径下的已经存入的这个文件删除掉了,那在数据库中的这个字段下还有这个文件的内容吗?我用asp.net调用能调用出来文件的内容吗?

论坛徽章:
0
6 [报告]
发表于 2004-05-11 16:03 |只看该作者

请问如何修改和删除bfile类型的数据,谢谢!

bfile字段在数据库里面是不存内容的, 删除了当然就调不出来了

论坛徽章:
0
7 [报告]
发表于 2004-05-11 16:06 |只看该作者

请问如何修改和删除bfile类型的数据,谢谢!

1。那blob字段存储的是文件本身吗?
2。如果我用blob类型的字段,我应该怎么存入数据文件呢,能告诉我具体的sql语句吗,
3。用asp.net调用数据库的话用bfile类型还是blob类型的好
谢谢!!

论坛徽章:
0
8 [报告]
发表于 2004-05-11 16:14 |只看该作者

请问如何修改和删除bfile类型的数据,谢谢!

blob可以把存储文件内容,
具体用那个看你的需要,bfile是外部lob类型
clob/blob都是内部lob类型

bfile的文件是否实际存在,oracle数据库不保证.

使用pl/sql的时候可以用dbms_lob这个包来操作

asp.net不熟悉, 我想你也可以通过oci来做或者调用存储过程, 在oracle_home下面有lob的很多demo, 你可以借鉴一下.

oracle的公开文档中有有关于lob类型的详细使用

论坛徽章:
0
9 [报告]
发表于 2004-05-11 21:16 |只看该作者

请问如何修改和删除bfile类型的数据,谢谢!

我没有找到您说的,您能直接把存储blob类型数据的sqlplus语句提供给我吗?万分感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP