Do you want to display an image on a report in APEX ?
Is the image stored as a BLOB data type in your schema or the blob is returned by some functions?
If so, then displaying the BLOB is not a simple or straight forward task.
Actually it is a simple and straight forward task, as long as you know “the trick” you need to create/defined in your APEX report.
The following steps outlines what you need to do to create a report with a BLOB images. Most of these are the standard steps, except for Step 4. That is the important one.
1. Create the Report using the APEX wizard
Create a new report. In my example here I’m going to create a classic report.
Enter a title for the report, and accept the default settings
Create as new navigation menu entry
2. Define the Table or Query for the Report
Select the table or view that contains the data or define the SQL Query to return the results. It might be best to select this later option as it will make things clearer and easier to change in Step 4.
Click next on the next 2 screens of the wizard and then click the Create button.
3. Set the BLOB attribute settings
When you run the report you will get something like the following being displayed. As you can see it clearly does not display the BLOB image.
Next we need to setup the BLOB attribute settings. As shown in the following.
When we run the report now, we now get an error message.
4. Change the report query to return the length of the BLOB
Now this is the magic bit.
To get the image to display you need to go back to the Report level and change the query in the SQL Query box, to contain function below that get the length of the image in the BLOB attribute, dbms_lob.getlength() (in my example this attribute is call IMAGE)
select ID, dbms_lob.getlength(image) image from V_DOCUMENT_TM_IMAGE
5. The BLOB object now appears 🙂
That’s it. Now when you run your report the image will be displayed.
So now you know how to display a BLOB image in an APEX Report.
(Thanks to Roel and Joel for the help in working out how to do this)