Skip to main content

Move BLOB files into Oracle Directory

Solution:

Step 1: Click Oracle Directories to understand about directory creation.

Step 2: Create plsql procdure blob_to_file. It move BLOB files into respected database directories.

CREATE OR REPLACE
PROCEDURE blob_to_file(
    p_blob     IN OUT nocopy BLOB,
    p_dir      IN VARCHAR2,
    p_filename IN VARCHAR2)
AS
  l_file utl_file.file_type;
  l_buffer RAW(32767);
  l_amount binary_integer := 32767;
  l_pos      INTEGER           := 1;
  l_blob_len INTEGER;
BEGIN
  l_blob_len := dbms_lob.getlength(p_blob);
  -- Open the destination file.
  l_file := utl_file.fopen(p_dir, p_filename,'wb', 32767);
  -- Read chunks of the BLOB and write them to the file until complete.
  WHILE l_pos <= l_blob_len
  LOOP
    dbms_lob.READ(p_blob, l_amount, l_pos, l_buffer);
    utl_file.put_raw(l_file, l_buffer, TRUE);
    l_pos := l_pos + l_amount;
  END LOOP;
  -- Close the file.
  utl_file.fclose(l_file);
EXCEPTION
WHEN OTHERS THEN
  -- Close the file if something goes wrong.
  IF utl_file.is_open(l_file) THEN
    utl_file.fclose(l_file);
  END IF;
  raise;
END blob_to_file;

Step 2: Call the procedure and test it.

  • Store BLOB in database
  • Push BLOB files into directory


CREATE TABLE store_blob_clob_files
  (
    id NUMBER,
    blob_content BLOB,
    clob_content CLOB
  );

DECLARE
  l_blob BLOB;
BEGIN
  -- Get BLOB file

  SELECT blob_content
    INTO l_blob
    FROM store_blob_clob_files
   WHERE ID = 1;

  -- Push BLOB files into directory

  blob_to_file (p_blob => l_blob,
                        p_dir  => 'TEMP',
                        p_filename => 'samplereport.pdf'
                       );

END;

Step 3: Check the generated file exists in the directory.

Related Posts:

Comments

Popular posts from this blog

Printing Page Numbers in RTF Template [Oracle BI Publisher]

Here I am giving an example to print the page numbers dynamically in the RTF (Rich Text Format) template. Step 1:  Go to page footer and copy and paste the below script. Page |  <?fo:page-number?>  of  <?fo:page-number-citation:xdofo:lastpage-joinseq?> <fo:page-number> :   This is the object, which is used to represent the current page-number. <?fo:page-number-citation:xdofo:lastpage-joinseq?> :  This is the syntax, which is used to represent the total number of pages. Step 2:  Load the XML and preview the result. Output: That's it. References: fo:page-number Printing Page Number Code in Oracle XMLP RTF Template

Oracle Application Express Views (APEX)

Application Express Views Search SELECT * FROM apex_dictionary WHERE column_id = 0; View Comment Parent View APEX_APPLICATIONS Applications defined in the current workspace or database user. APEX_WORKSPACES APEX_APPLICATION_ALL_AUTH All authorization schemes for all components by Application APEX_APPLICATIONS

Save Selected Interactive Grid Records into a Collection - Oracle APEX

Here I am giving an example to save selected interactive grid records into a oracle apex collection. Step 1: Create a new blank page. Note: Mine was page 20. You will need to update reference to " P20 " with your page number if it's different. Step 2: Create a new interactive grid report region to the page using below query. Set Static Id "EmpDetails" to the region. SELECT  *     FROM   ( SELECT  emp . empno ,                emp . ename ,                emp . JOB ,                dept . dname department ,                dept . loc  LOCATION ,                mgr . ename  manager ,                emp . hiredate ,                 nvl ( emp . sal , 0 )  salary ,                 nvl ( emp . comm , 0 )  commission            FROM  eba_demo_chart_emp emp ,                eba_demo_chart_dept dept ,                eba_demo_chart_emp mgr           WHERE  emp . deptno = dept . deptno             AND  emp . mgr      = mgr . empno  ( + )           ORDER   BY  emp . ename