暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在SQL Developer中正确显示pdf文件

askTom 2017-03-06
412

问题描述

你好,

我正在尝试使用SQL Developer显示PDF (BFILE) 的内容,但我只有工件。

这里是我的代码:

CREATE TABLE MY_DOC
   ( ID NUMBER PRIMARY KEY, 
  FILE_NAME VARCHAR2(255 BYTE), 
  UPLOAD_DATE VARCHAR2(10 BYTE), 
  FILESIZE VARCHAR2(20 BYTE), 
  FILETYPE VARCHAR2(5 BYTE), 
  CONTENT BFILE, 
  CREATION_DATE DATE DEFAULT sysdate NOT NULL ENABLE, 
  MODIFICATION_DATE DATE, 
  ACCESSED_DATE DATE, 
  )
  CREATE INDEX MY_DOC_IDX ON MY_DOC (CONTENT) 
   INDEXTYPE IS CTXSYS.CONTEXT ;


我用来显示文件的过程是:

CREATE OR REPLACE PROCEDURE displayBFILE_proc(p_file_name VARCHAR2) IS 
   Lob_loc  BFILE; 
   Buffer   RAW(1024); 
   Amount   BINARY_INTEGER := 1024; 
   Position INTEGER        := 1; 
BEGIN 
   /* Select the LOB: */ 
   SELECT content INTO Lob_loc 
   FROM My_Doc WHERE file_name = p_file_name ; 
   /* Opening the BFILE: */ 
   DBMS_LOB.OPEN (Lob_loc, DBMS_LOB.LOB_READONLY); 
   LOOP 
      DBMS_LOB.READ (Lob_loc, Amount, Position, Buffer); 
      /* Display the buffer contents: */ 
      DBMS_OUTPUT.PUT_LINE(utl_raw.cast_to_varchar2(Buffer)); 
      Position := Position + Amount; 
   END LOOP; 
   /* Closing the BFILE: */ 
   DBMS_LOB.CLOSE (Lob_loc); 
   EXCEPTION 
   WHEN NO_DATA_FOUND THEN 
      DBMS_OUTPUT.PUT_LINE('End of data'); 
END; 


你能告诉我我做错了什么吗?

非常感谢。

专家解答

你在读一个二进制文件!你不能把内容当成文字吐出来。您需要使用一个可以识别pdf文件格式的程序。

SQL Developer内置支持图像和文本blob:

http://www.thatjeffsmith.com/archive/2012/01/sql-developer-quick-tip-blobs-and-images/

但不是我知道的pdf。您可以使用与上面链接中Jeff描述的过程类似的过程将文件下载到您的计算机上 (单击结果数据网格中的铅笔图标)。但是选择 “下载”,然后将其保存到桌面。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论