برای نمايش يك تصوير موجود در ديتابيس در يك صفحه اراكل اپكس مي توان از آيتم 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″ />
