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


Download 0.95 Mb.
bet14/58
Sana28.12.2022
Hajmi0.95 Mb.
#1011518
1   ...   10   11   12   13   14   15   16   17   ...   58
Bog'liq
PL-SQL Маъруза матни

Чегаралар


GOTO жумласини ишлатишда айрим чегаралар мавжуд. Хусусан IF жумласи ичига, LOOP жумласига, ёки қисмблок ичига бошқарувни узатиш мумкин эмас:

Мисол 1.
BEGIN


...
GOTO update_row; -- қоидага хилоф жумла
...
IF valid THEN
...
<>
UPDATE emp SET ...
END IF;
END;

Мисол 2.
BEGIN


...
IF valid THEN
...
GOTO update_row; -- қоидага хилоф жумла
ELSE
...
<>
UPDATE emp SET ...
END IF;
END;

Мисол 3.
BEGIN


...
IF status = 'OBSOLETE' THEN
GOTO delete_part; -- қоидага хилоф жумла
END IF;
...
BEGIN
...
<>
DELETE FROM parts WHERE ...
END;
END;

Мисол 4.


DECLARE
...
PROCEDURE compute_bonus (emp_id NUMBER) IS
BEGIN
...
GOTO update_row; -- қоидага хилоф жумла
END;
BEGIN
...
<>
UPDATE emp SET ...
END;

Мисол 5.
DECLARE


...
pe_ratio REAL;
BEGIN
...
SELECT price / NVL(earnings, 0) INTO pe_ratio FROM ...
<>
INSERT INTO stats VALUES (pe_ratio, ...);
EXCEPTION
WHEN ZERO_DIVIDE THEN
pe_ratio := 0;
GOTO insert_row; -- қоидага хилоф жумла
END;

NULL Statement


NULL жумласи ошкор тарзда ҳаракат қилмасликни аниқлайди. У ҳеч қандай амал бажармайди ва бошқарувни навбатдаги жумлага узатади.
Мисол 1.
EXCEPTION
WHEN ZERO_DIVIDE THEN
ROLLBACK;
WHEN VALUE_ERROR THEN
INSERT INTO errors VALUES ...
COMMIT;
WHEN OTHERS THEN
NULL;
END;

Мисол 2.
IF rating > 90 THEN


compute_bonus(emp_id);
ELSE
NULL;
END IF;

Мисол 3.
PROCEDURE debit_account (acct_id INTEGER, amount REAL) IS


BEGIN
NULL;
END debit_account;



Download 0.95 Mb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   ...   58




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