问题描述
你好,
我正在尝试使用SQL Developer显示PDF (BFILE) 的内容,但我只有工件。
这里是我的代码:
我用来显示文件的过程是:
你能告诉我我做错了什么吗?
非常感谢。
我正在尝试使用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描述的过程类似的过程将文件下载到您的计算机上 (单击结果数据网格中的铅笔图标)。但是选择 “下载”,然后将其保存到桌面。
SQL Developer内置支持图像和文本blob:
http://www.thatjeffsmith.com/archive/2012/01/sql-developer-quick-tip-blobs-and-images/
但不是我知道的pdf。您可以使用与上面链接中Jeff描述的过程类似的过程将文件下载到您的计算机上 (单击结果数据网格中的铅笔图标)。但是选择 “下载”,然后将其保存到桌面。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




