怎样在Oracle中创建,维护图形大对象

文章作者 100test 发表时间 2008:02:01 15:40:50
来源 100Test.Com百考试题网


  通过一个例子给大家介绍一下在Oracle中使用大对象的方法。在这个例子中,目的是要把一个jpeg图像装入Oracle,并且用C Builder显示出来。如果使用bmp图像,则处理的过程更简单一些,这里就不再鳌述了。 
   
  例子: 
  1. 创建一个表picture 
  create table picture 
  ( 
  picture_name varchar2(30), 
  picture_blob blob, 
  picture_locator bfile 
  ). 
   
  2. 创建一个目录,需要有DBA权限,用于指向在操作系统中的某个目录 
  create directory picture_dir as d:\blob_test. 
  假设在d:\blob_test目录下存放有pic.jpg、pic.bmp、pic.doc等文件 
   
  3. 插入一条记录,注意blob对象需要初始化为空对象,对于Blob类型的大对象必须用Empty_blob()函数。 
  insert into picture (picture_name,picture_blob,picture_locator ) 
  values( 
  pic1,empty_blob(),bfilename(PICTURE_DIR,PIC.JPG)). 
   
  4. 将picture_locator所指向的图形文件导入数据库的picture表中: 
  declare 
  l_pic_locator bfile. 
  l_pic_blob blob. 
  l_dir varchar2(200). 
  l_filename varchar2(200). 
  BEGIN 
  0select picture_locator,picture_blob into l_pic_locator,l_pic_blob from picture where name=pic1. 
  -- 1。判断文件是否存在 
  IF DBMS_LOB.FILEEXISTS(l_pic_locator)=1 then 
  dbms_output.put_line(!!! The file exists!). 
  -- 2. 判断文件是否已被打开 
  if dbms_lob.fileisopen(l_pic_locator)=0 THEN 
  DBMS_OUTPUT.PUT_LINE( THE FILE IS NOT OPEN, TO OPEN THE FILE...). 
  -- 3. 打开文件 
  DBMS_LOB.FILEOPEN(l_pic_locator). 
  DBMS_OUTPUT.PUT_LINE(!!! THE FILE IS OPENED!). 
   
  -- 4. 可以获得关于文件的一些信息,比如文件名,大小等 
  dbms_output.put_line(The Length of the file is:||to_char(dbms_lob.getlength(l_pic_locator))). 
  dbms_lob.filegetname(l_pic_locator,l_dir,l_filename). 
  DBMS_OUTPUT.PUT_LINE(The opened file name is :||l_dir||\||l_filename). 
  -- 5. 将外部jpeg文件装入Blob字段 
  DBMS_LOB.LOADFROMFILE(l_pic_blob,l_pic_locator,dbms_lob.getlength(l_pic_locator),1,1). 
  dbms_output.put_line(The file is loaded into database!). 



相关文章


Oracle10g新特性——正则表达式
Oracle:SOA,如何迎头赶上?
怎样在Oracle中创建,维护图形大对象
Oracle10gI taller创建临时文件漏洞
关于Oracle8.1.7安装时出现故障的最快解决方法
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛