Хатолик
|
Сонли
|
Белгили
|
Алмаштириш
|
Санали
|
Объект
|
Аралаш
|
SQLCODE
SQLERRM
|
ABS
ACOS
ASIN
ATAN
ATAN2
CEIL
COS
COSH
EXP
FLOOR
LN
LOG
MOD
POWER
ROUND
SIGN
SIN
SINH
SQRT
TAN
TANH
TRUNC
|
ASCII
CHR
CONCAT
INITCAP
INSTR
INSTRB
LENGTH
LENGTHB
LOWER
LPAD
LTRIM
NLS_INITCAP
NLS_LOWER
NLSSORT
NLS_UPPER
REPLACE
RPAD
RTRIM
SOUNDEX
SUBSTR
SUBSTRB
TRANSLATE
TRIM
UPPER
|
CHARTOROWID
CONVERT
HEXTORAW
RAWTOHEX
ROWIDTOCHAR
TO_CHAR
TO_DATE
TO_MULTI_BYTE
TO_NUMBER
TO_SINGLE_BYTE
|
ADD_MONTHS
LAST_DAY
MONTHS_BETWEEN
NEW_TIME
NEXT_DAY
ROUND
SYSDATE
TRUNC
|
DEREF
REF
VALUE
|
BFILENAME
DECODE
DUMP
EMPTY_BLOB
EMPTY_CLOB
GREATEST
LEAST
NLS_CHARSET_DECL_LEN
NLS_CHARSET_ID
NLS_CHARSET_NAME
NVL
SYS_CONTEXT
SYS_GUID
UID
USER
USERENV
VSIZE
|
Назорат тузилмалари
Ушбу бўлимда PL/SQL дастурларида назорат оқимлари қандай тузилганлиги ҳақида сўз юритилади. Назорат тузилмалари қуйидаги жадвалда келитирлган:
Назорат тузилмалари
Шартли назорат: IF жумлалари
IF жумлаларнинг учта формаси мавжуд: IF-THEN, IF-THEN-ELSE, ва IF-THEN-ELSIF.
IF-THEN
IF-THEN жумласи қуйидаги синтаксисга эга
IF шарт THEN
Жумлалар_кетма_кетлиги
END IF;
Бу ерда жумлалар_кетма_кетлиги бажарилади, агарда шарт рост бўлса. Масалан
IF sales > quota THEN
compute_bonus(empid);
UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;
Сиз IF жумласини битта қаторда ҳам ёзишингиз мумкин:
IF x > y THEN high := x; END IF;
IF-THEN-ELSE
IF-THEN-ELSE жумласи қуйидаги синтаксисга эга
IF шарт THEN
Жумлалар_кетма_кетлиги1
ELSE
Жумлалар_кетма_кетлиги2
END IF;
Бу ерда жумлалар_кетма_кетлиги1 бажарилади, агарда шарт рост бўлса, акс ҳолда жумлалар_кетма_кетлиги2 бажарилади. Масалан
IF trans_type = 'CR' THEN
UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
UPDATE accounts SET balance = balance - debit WHERE ...
END IF;
IF жумлалари ўзаро ичма-ич жойлашиши мумкин:
IF trans_type = 'CR' THEN
UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
IF new_balance >= minimum_balance THEN
UPDATE accounts SET balance = balance - debit WHERE ...
ELSE
RAISE insufficient_funds;
END IF;
END IF;
IF-THEN-ELSIF
IF-THEN-ELSIF жумласи қуйидаги синтаксисга эга
IF шарт1 THEN
Жумлалар_кетма_кетлиги1
ELSIF шарт2 THEN
Жумлалар_кетма_кетлиги2
ELSE
Жумлалар_кетма_кетлиги3
END IF;
Бу ерда жумлалар_кетма_кетлиги1 бажарилади, агарда шарт1 рост бўлса, акс ҳолда жумлалар_кетма_кетлиги2 бажарилади, агарда шарт2 рост бўлса, акс ҳолда жумлалар_кетма_кетлиги1 бажарилади. Масалан
BEGIN
...
IF sales > 50000 THEN
bonus := 1500;
ELSIF sales > 35000 THEN
bonus := 500;
ELSE
bonus := 100;
END IF;
INSERT INTO payroll VALUES (emp_id, bonus, ...);
END;
IF жумлаларида ELSIF жумлалари сони ихтиёрий бўлиши мумкин. Ичма-ич жойлашган IF жумлалари ўрнига ELSIF жумлаларидан фойдаланиш тавсия этилади.
IF condition1 THEN |IF condition1 THEN
statement1; | statement1;
ELSE |ELSIF condition2 THEN
IF condition2 THEN | statement2;
statement2; |ELSIF condition3 THEN
ELSE | statement3;
IF condition3 THEN | END IF;
statement3; |
END IF; |
END IF; |
END IF; |
Do'stlaringiz bilan baham: