Dynamic Image In plsql region

براي نمايش يك تصوير موجود در ديتابيس در يك پيج اوراكل اپكس مي توان از آيتم 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 ); 

end;

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

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 را به صورت زير مقدار دهيم، در اين آدرس دهي از صفحه 51 مقدار MARKAZ_CODE به صفحه 54 پاس داده شده است.

:کد

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