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

نمایش فایل تصویری در 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 );

end;

 

این 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″  />