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


Фойдаланувчи томонидан аниқланган мустаснолар



Download 0,95 Mb.
bet37/58
Sana10.07.2022
Hajmi0,95 Mb.
#771988
1   ...   33   34   35   36   37   38   39   40   ...   58
Bog'liq
PL-SQL Маъруза матни (2)

Фойдаланувчи томонидан аниқланган мустаснолар


PL/SQL фойдаланувчига ўзининг мустасносини эълон қилишга имкон беради. Олдиндан аниқланган мустаснодан фарқли равишда фойдаланувчи томонидан аниқланган мустаснолар эълон қилиниши лозим ва RAISE жумласи ёрдамида ошкор тарзда содир этилиши шарт.

Мустасноларни эълон қилиш


Мустасноларни PL/SQL блоки, қисмпрограммаси ёки пакетнинг эълон қилиш қисмида эълон қилиш мумкин холос. Мустаснони унинг номини киритиш ва EXCEPTION таянч хизматчи сўз билан давом этириш лозим. Масалан:
DECLARE
past_due EXCEPTION;

Эълон қилиш қоидалари


Битта блокнинг ичида мустаснони икки марта эълон қилиш мумкин эмас. Аммо битта мустаснони иккита ҳар хил блокларда эълон қилиш мумкин ва уларга масалан қуйидагича мурожаат қилиш мумкин:
Блок_меткаси.мустасно_номи

Қуйидаги мисол битта мустаснони иккита ҳар хил блокларда эълон қилиш мумкинлигини намойиш этади:


DECLARE
past_due EXCEPTION;
acct_num NUMBER;
BEGIN
DECLARE -- қисм-блок бошланиши
past_due EXCEPTION; -- эълон қилиш prevails
acct_num NUMBER;
BEGIN
...
IF ... THEN
RAISE past_due; -- бунга ишлов берилмайди
END IF;
END; ------------- қисм-блок охири
EXCEPTION
WHEN past_due THEN -- содир этилган мустаснога ишлов берилмайди
...
END;

Охирги блокдаги мустаснога ишлов бериш қисми ишланмайди, чунки past_due мустаснонинг содир этиш ички блокда юз бериб, унда ищлов бериш қисми (ички блок ичида)мавжуд эмас. Бу ерда RAISE жумласи ва WHEN жумласи ҳар хил мустасноларга мурожаат қилаяпти. Охирги блокдаги мустаснога ишлов бериш қисми ишлаши учун past_due мустаснонинг эълон қилиш қисмини ички блокдан олиб ташлаш лозим ёки OTHERS ишлов бериш қисмини киритиш керак.


EXCEPTION_INIT фойдаланиш


Номланмаган ички мустасноларга ищлов бериш учун OTHERS ишлов берувчидан ёки EXCEPTION_INIT прагмадан фойдаланишингиз мумкин. Прагма – бу компиляторга директива бўлиб хизмат қилади.

PL/SQL-да EXCEPTION_INIT прагмаси мустасно номини Oracle хатолиги номери билан боглашга компиляторга кўрсатма беради. Бу эса ўз навбатида ихтиёрий ички мустаснога унинг номи орқали мурожаат қилишга ва унга ишлов берувчи ёзишга имкон беради. EXCEPTION_INIT прагмаси қуйидаги синтаксисга эга:


PRAGMA EXCEPTION_INIT(мустасно_номи, Oracle_хатолиги_номери);

Бу ерда мустасно_номи олдин эълон қилинган мустаснонинг номи. Прагма мустасно эълон қилингандан сўнг ихтиёрий жойда келиши мумкин. Масалан:


DECLARE
deadlock_detected EXCEPTION;
PRAGMA EXCEPTION_INIT(deadlock_detected, -60);
BEGIN
...
EXCEPTION
WHEN deadlock_detected THEN
-- хатолик ишлов берилади
END;

Download 0,95 Mb.

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




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish