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


Download 0.95 Mb.
bet10/58
Sana28.12.2022
Hajmi0.95 Mb.
#1011518
1   ...   6   7   8   9   10   11   12   13   ...   58
Bog'liq
PL-SQL Маъруза матни

Хатолик 

Сонли 

Белгили 

Алмаштириш

Санали 

Объект 

Аралаш 

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; |



Download 0.95 Mb.

Do'stlaringiz bilan baham:
1   ...   6   7   8   9   10   11   12   13   ...   58




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