نمایش فایل تصویری در PL/SQL Dynamic Content

برای نمايش يك تصوير موجود در ديتابيس در يك صفحه اراكل اپكس مي توان از آيتم display image استفاده كرد. برای اينكار Setting مربوط به  Display image مقدار Based on روی blob column returned by sql statement   قرار داده و با استفاده از دستور sql  مناسب تصوير از ديتابيس خوانده مي شود. در حالی كه اين يك راهكار ساده برای نمايش تصاوير است اما انعطاف لازم براي نمايش در يك HTML REGION   را ندارد. به عنوان مثال در موارد متعددي لازم است تا يك فرم با استفاده از HTML REGION ساخته شود و در آن يك تصوير مشخص از ديتابيس FETCH شده و با استفاده از تگ <IMG> نمايش داده شود. در اين نوشتار نحوه نمايش دايناميك تصاوير موجود در ديتابيس در يك HTML REGION شرح داده شده است.

برای اين منظور يك PROCEDURE  به صورت ذيل می سازيم:

create or replace procedure am_pr_show_img(in_pk_col_value number,in_table_name varchar2,in_pk_col_name varchar2,in_blob_col_name varchar2) as

v_str varchar2(4000);

v_value varchar2(1000);

v_lob blob;

v_temp_mime varchar2(1000);

v_temp_fname varchar2(1000);

begin

v_str := ‘select ‘||in_blob_col_name ||’  from ‘||in_table_name ||’ where ‘||in_pk_col_name ||’=’|| in_pk_col_value;

EXECUTE IMMEDIATE  v_str into v_lob;

wpg_docload.download_file( v_lob );

اين PROCEDURE نام جدول و نام ستون با كليد اصلی و مقدار آن و نام ستون حاوی تصوير(BLOB) را به عنوان ورودی دريافت مي كند و تصوير BLOB را درون PAGE  بارگذاری می نمايد.
حال يك صفحه جديد بايستی ايجادشود تا از آدرس اين صفحه به عنوان src مربوط به تگ IMG استفاده شود.  در اين صفحه بايستی procedure كه در بالا ساخته شد صدا زده شود:
(به عنوان مثال صفحه ۵۴ براي اينكار ساخته شده است. بايستی توجه داشت كه پارامتر های لازم برای procedure در اين صفحه بايستی فراهم شود. در اينجا مقدار in_pk_col_value با استفاده از  :P54_MARKAZ_CODE مقدار دهی مي شود)

BEGIN

HTP.INIT;

WWV_FLOW.G_PAGE_TEXT_GENERATED := TRUE;

AM_PR_SHOW_IMG(:P54_MARKAZ_CODE,’AM_TB_MARKAZ’,’MARKAZ_CODE’,’LOGO’);

END;

 حال در HTML REGION مورد نظر بايستی در تگ IMG مقدار SRC را به صورت زير مقدار دهيم، در اين آدرس دهی از صفحه ۵۱ مقدار MARKAZ_CODE به صفحه ۵۴ پاس داده شده است.

<img src=”f?p=440:54:&SESSION.:::54:P54_MARKAZ_CODE:&P51_MARKAZ_CODE.” height=”72″ width=”73″  />