Основы (асослар)


Raise_application_error фойдаланиш


Download 0.95 Mb.
bet38/58
Sana28.12.2022
Hajmi0.95 Mb.
#1011518
1   ...   34   35   36   37   38   39   40   41   ...   58
Bog'liq
PL-SQL Маъруза матни

Raise_application_error фойдаланиш


DBMS_STANDARD пакети приложения ва Oracle орасидаги муносабатни осонлаштириш учун хизмат қилади. Масалан ундаги raise_application_error процедураси фойдаланувчи томонидан аниқланган хатолик хабарини сақланадиган қисмдастурдан чиқариб беришга имкон беради. Щу йўл билан сиз хатоликлар ҳақида мижоз дастурига хабар бериш имконига эгасиз. raise_application_error процедурасини чақириш учун қуйидаги синтаксисдан фойдаланинг:
raise_application_error(хатолик_номери, хабар[, {TRUE | FALSE}]);

бу ерда хатолик_номери -20000 .. -20999 оралиқда ётувчи манфий бутун сон ва хабар белгили қатор бўлиб узунлиги 2048 байтдан ошмайди. Агар учинчи параметрнинг қиймати TRUE бўлса, хатолик олдинги хатоликларнинг стёкида жойлашади. Агар учинчи параметрнинг қиймати FALSE бўлса, хатолик олдинги барча хатоликларини алмаштиради. DBMS_STANDARD пакети STANDARD пакетининг кенгайтмасидир.


Қуйидаги мисолда, агар ишчи маоши қолдириб юборилган бўлса, raise_application_error чақирилади:
CREATE PROCEDURE raise_salary (emp_id NUMBER, amount NUMBER) AS
curr_sal NUMBER;
BEGIN
SELECT sal INTO curr_sal FROM emp WHERE empno = emp_id;
IF curr_sal IS NULL THEN
/*Фойдаланувчи аниқланган хатолик
чиқарилади. */
raise_application_error(-20101, 'Маош қолдириб юборилган');
ELSE
UPDATE emp SET sal = curr_sal + amount WHERE empno = emp_id;
END IF;
END raise_salary;

Олдиндан аниқланган мустасноларни қайта эълон қилиш


Шуни таъкидлаб ўтиш жоизки PL/SQL олдиндан аниқланган мустасноларни STANDARD, пакетида глобал тарзда эълон қилади. Олдиндан эълон қилинган мустасноларни қайта эълон қилсангиз, хатолик юз бериши мумкин, чунки локал эълон қилинган мустасно глобал эълон қилинган мустасно устига ёзилади. Масалан, агар сиз invalid_number номли мустасно эълон қилсангиз ва PL/SQL олдиндан аниқланган INVALID_NUMBER мустаснони ички содир этса, INVALID_NUMBER учун ёзилган ишлов берувчи ички мустаснони ушлаб билмайди. Бу нохуш ҳолатдан нуқта белгисидан фойдаланиш орқали чиқиш мумкин:
EXCEPTION
WHEN invalid_number OR STANDARD.INVALID_NUMBER THEN
-- хатолик ишлов берилади.
END;

Download 0.95 Mb.

Do'stlaringiz bilan baham:
1   ...   34   35   36   37   38   39   40   41   ...   58




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling