- 3,722,386 Users
- 2,244,298 Discussions
- 7,849,820 Comments
Forum Stats
Discussions
Categories
- 16 Data
- 362.2K Big Data Appliance
- 7 Data Science
- 2K Databases
- 589 General Database Discussions
- 3.7K Java and JavaScript in the Database
- 32 Multilingual Engine
- 495 MySQL Community Space
- 7 NoSQL Database
- 7.7K Oracle Database Express Edition (XE)
- 2.8K ORDS, SODA & JSON in the Database
- 419 SQLcl
- 57 SQL Developer Data Modeler
- 185K SQL & PL/SQL
- 21.1K SQL Developer
- 2.3K Development
- 3 Developer Projects
- 32 Programming Languages
- 135.5K Development Tools
- 12 DevOps
- 3K QA/Testing
- 323 Java
- 10 Java Learning Subscription
- 12 Database Connectivity
- 70 Java Community Process
- 2 Java 25
- 11 Java APIs
- 141.2K Java Development Tools
- 8 Java EE (Java Enterprise Edition)
- 153K Java Essentials
- 135 Java 8 Questions
- 86.2K Java Programming
- 270 Java Lambda MOOC
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 14 Java SE
- 13.8K Java Security
- 3 Java User Groups
- 22 JavaScript - Nashorn
- 18 Programs
- 145 LiveLabs
- 34 Workshops
- 9 Software
- 3 Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 4 Deutsche Oracle Community
- 15 Español
- 1.9K Japanese
- 3 Portuguese
Download blob from function instead table field

pjsiong-JavaNet
Member Posts: 398
Hi,
Is that possible to download blob field content which are return by a function?
I can only download blob if the blob is in table column..
Thanks
Vincent
Is that possible to download blob field content which are return by a function?
I can only download blob if the blob is in table column..
Thanks
Vincent
Best Answer
-
Hi Vincent,
I think that you can download blob content returned by a function without any problem. In the example below, the function get_blob returns a BLOB, you will have to specify the mime type and filename, and the BLOB length is obtained using the function DBMS_LOB.GETLENGTH. Finally, a call to the wpg_docload.download_file procedure is made. To call the download_file procedure you can do it through the URL or through a page with a "Branch To PL/SQL Procedure" in the "Before Header" point. More info about this kind of procedure here.create or replace PROCEDURE "DOWNLOAD_FILE" ( inID NUMBER ) AS vMIME VARCHAR2(48); vLENGTH NUMBER; vFILENAME VARCHAR2(2000); vBLOB BLOB; BEGIN vMIME := 'application/octet-stream'; vFILENAME := 'Test.sql'; vBLOB := get_blob(inID); vLENGTH := DBMS_LOB.GETLENGTH(vBLOB); owa_util.mime_header(nvl(vMIME, 'application/octet'), FALSE); htp.p('Content-length: ' || vLENGTH); htp.p('Content-Disposition: attachment; filename="' || SUBSTR(vFILENAME, INSTR(vFILENAME, '/') + 1) || '"'); owa_util.http_header_close; wpg_docload.download_file(vBLOB); END;
Regards,
Sergio
Answers
-
Hi Vincent,
I think that you can download blob content returned by a function without any problem. In the example below, the function get_blob returns a BLOB, you will have to specify the mime type and filename, and the BLOB length is obtained using the function DBMS_LOB.GETLENGTH. Finally, a call to the wpg_docload.download_file procedure is made. To call the download_file procedure you can do it through the URL or through a page with a "Branch To PL/SQL Procedure" in the "Before Header" point. More info about this kind of procedure here.create or replace PROCEDURE "DOWNLOAD_FILE" ( inID NUMBER ) AS vMIME VARCHAR2(48); vLENGTH NUMBER; vFILENAME VARCHAR2(2000); vBLOB BLOB; BEGIN vMIME := 'application/octet-stream'; vFILENAME := 'Test.sql'; vBLOB := get_blob(inID); vLENGTH := DBMS_LOB.GETLENGTH(vBLOB); owa_util.mime_header(nvl(vMIME, 'application/octet'), FALSE); htp.p('Content-length: ' || vLENGTH); htp.p('Content-Disposition: attachment; filename="' || SUBSTR(vFILENAME, INSTR(vFILENAME, '/') + 1) || '"'); owa_util.http_header_close; wpg_docload.download_file(vBLOB); END;
Regards,
Sergio -
Thanks Sergio, it's work..
This discussion has been closed.