مدیرت خطا ها در اوراکل اپکس 5

در این آموزش قصد داریم با یک مثال نحوه مدیریت و ترجمه خطا ها در اوراکل اپکس را آموزش دهیم.

ابتدا یک جدول با نام members و با ساختار زیر ایجاد کنید.

create table members(id number,fname varchar2(20));

حال یک constraint با نام UNIQUE_ID_MEMBERS از نوع primary key برای جدول فوق ایجاد می کنیم.

ALTER TABLE members ADD
CONSTRAINT UNIQUE_ID_MEMBERS
PRIMARY KEY (ID)
ENABLE
VALIDATE

حال در Application خود در اپکس یک فرم برای جدول فوق ایجاد نمایید.

همان طور که خودتان بهتر می دانید در جدول members فیلد id از نوع PRIMARY KEY است و چنانچه کاربر مقدار تکراری برای ID وارد کند با خطای زیر برخورد می کند.

حال می خواهیم به جای نمایش پیغام به صورت لاتین. این پیغام رو به صورت فارسی ترجمه و به کاربر نمایش دهیم. برای این کار مراحل زیر را دنبال کنید.

 

1- ابتدا یک جدول برای نگهداری متن ترجمه خطا ها ایجاد کنید.

CREATE TABLE CONSTRAINT_MESSAGE
(
CONSTRAINT_NAME VARCHAR2(30 BYTE) NOT NULL,
MESSAGE VARCHAR2(4000 BYTE) NOT NULL
);

و سپس تمامی CONSTRAINT ها و متن ترجمه را در جدول فوق درج کنید.

مثال:

INSERT INTO CONSTRAINT_MESSAGE VALUES('UNIQUE_ID_MEMBERS','سریال تکراری است');

نکته: در جدول CONSTRAINT_MESSAGE نام آبجکت Constraint خود را با حروف بزرگ درج کنید.

 

2- حال یک function با نام apex_error_handling_example و با ساختار زیر ایجاد کنید.

CREATE OR REPLACE function apex_error_handling_example (
p_error in apex_error.t_error )
return apex_error.t_error_result
is
l_result apex_error.t_error_result;
l_reference_id number;
l_constraint_name varchar2(255);
begin
l_result := apex_error.init_error_result (
p_error => p_error );


if p_error.is_internal_error then

if p_error.apex_error_code <> 'APEX.AUTHORIZATION.ACCESS_DENIED' then

l_result.message := 'An unexpected internal application error has occurred. '||
'Please get in contact with XXX and provide '||
'reference# '||to_char(l_reference_id, '999G999G999G990')||
' for further investigation.';
l_result.additional_info := null;
end if;
else

l_result.display_location := case
when l_result.display_location = apex_error.c_on_error_page then apex_error.c_inline_in_notification
else l_result.display_location
end;


if p_error.ora_sqlcode in (-1, -2091, -2290, -2291, -2292) then
l_constraint_name := apex_error.extract_constraint_name (
p_error => p_error );

begin
select message
into l_result.message
from CONSTRAINT_MESSAGE
where constraint_name = l_constraint_name;
exception when no_data_found then null; -- not every constraint has to be in our lookup table
end;
end if;


if p_error.ora_sqlcode is not null and l_result.message = p_error.message then
l_result.message := apex_error.get_first_ora_error_text (
p_error => p_error );
end if;


if l_result.page_item_name is null and l_result.column_alias is null then
apex_error.auto_set_associated_item (
p_error => p_error,
p_error_result => l_result );
end if;
end if;

return l_result;
end apex_error_handling_example;

3- وارد تنظیمات Application خود شوید برای اینکار در صفحه مربوط به Application بر روی گزینه Edit Application Definition کلیک کنید.

4- حال در قسمت Error Handling Function در تب Error Handling نام تابعی را که در مرحله قبل ایجاد کرده اید وارد نمایید و سپس بر روی گزینه Apply Changes کلیک کنید.

 

 

 

5- حال دوباره Application خود را Run کنید و در صفحه ای که برای جدول members ایجاد کرده اید یک رکورد با id تکراری درج کنید.

 

دمو

 

 

برخی از مشتریان ما

درباره ما

وب سایت RDBMS.IR با هدف نصب و راه اندازی، پشتیبانی و مشاوره بانک اطلاعاتی اوراکل برای هم وطنان عزیر و همچنین آموزش و تدریس اوراکل اپکس  تاسیس شده است

 

تماس با ما

شماره تماس: 09199131631

شماره تماس: 09122345018

تلگرام: 09331788945

ایمیل: این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید
Top
We use cookies to improve our website. By continuing to use this website, you are giving consent to cookies being used. More details…