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


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

Бул қийматлар


Бул турдаги ўзгарувчиларига 3 хил қиймат бериш мумкин:

  • FALSE

  • TRUE

  • NULL

Масалан

DECLARE
done BOOLEAN


...
BEGIN
done: = FALLS
WHILE NOT done LOOP
...
END LOOP;
END;

ёки

done: = (count > 500);


Берилганлар базасидаги қийматлар


Берилганлар базасида жойлашган қийматларни ўзгарувчиларга бериш учун SELECT жумласидан фойдаланиш мумкин:


DECLARE
my_empno emp.empno%TYPE;


my_ename emp.ename%TYPE;
wages NUMBER(7,2);
BEGIN
...
SELECT ename, sal + comm
INTO last_name, wages FROM emp
WHERE empno = emp_id;

Аммо сиз устун қийматларини бул ўзгарувчиларигаберолмайсиз.




Ифода ва солиштириш


Ифодалар операнд ва амаллар ёрдамида тузилади. Операнд ўзгарувчи, ўзгармас, литерал ёки чақираладиган функция бўлиши мумкин. Содда арифметик ифода мисолини келтирамиз:


-X / 2 + 3


Унар амаллар (- минус амали каби) битта операнд устида бажарилади, бинар амаллар (/ бўлиш амали каби) эса иккита операнд устида бажарилади.




Амалларни бажариш тартиби


Ифодаларда амаллар қуйидаги жадвалда кўрсатилган тартибда (юқоридан пастга қараб) бажарилади.



Оператор

Амал

**, NOT

Даражага кўтариш, инкор қилиш

+, -

  1. унар минус ва плюс

*, /

Кўпайтириш, бўлиш

+, -, ||

қўшиш, айириш, конкатенация амали

=, ! =, <, >, <=, >=,
IS NULL, LIKE, BETWEEN, IN

Солишитириш

AND

Мантиқий кўпайтириш

OR

Мантиқий қўшиш



Мантиқий амаллар


Мантиқий амаллар қуйидаги жадвалда кўрсатилган тарзда амалга оширилади.



x

y

x AND y

x OR y

NOT x

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

FALSE

TRUE


TRUE

NULL

NULL

TRUE


FALSE

TRUE

FALSE

TRUE

TRUE

FALSE

FALSE

FALSE

FALSE


FALSE

NULL

FALSE

NULL


NULL

TRUE

NULL

TRUE

NULL

NULL

FALSE

FALSE

NULL


NULL

NULL

NULL

NULL


Солиштириш амаллари


қуйидаги жадвалда солишитириш амалларининг маъноси келтирилган:



Оператор  

Маъноси  

=  

тенг  

<>, !=, ~=  

тенг эмас  

<  

кичик  

>  

катта  

<=  

кичик ёки тенг  

>=  

катта ёки тенг  

IS NULL оператори


IS NULL оператори TRUE бул қиймат қайтаради, агар унинг операнди NULL қийматга эга бўлса ва FALSE қийматни қайтаради, агар унинг операнди NULL фарқли қийматга эга бўлса. Масалан


IF variable IS NULL THEN ...




LIKE


LIKE оператори белгили қийматларни солиштириш учун ишлатилади ва у бул қиймат қайтаради. Масалан ename ўзгарувчиси ‘JONSON’ қийматига эга бўлса


ename LIKE 'J%SON'


ифода TRUE қиймат қайтаради. Бу ерда % белгилар тўпламини билдиради, у бўш ҳам бўлиши мумкин.




BETWEEN оператори


BETWEEN оператори қийматни берилган интервалда ётиш ёки ётмаслигини аниқлаб беради. Масалан


45 BETWEEN 38 AND 44


ифода FALSE қийматни қайтаради.




IN оператори


IN оператори қиймат берилган тўпламнинг бирор элементи билан устма-уст тушишини текширади. Тўпламда NULL қатнашиши мумкин, аммо у инобатга олинмайди. Масалан


DELETE FROM emp WHERE ename IN (NULL, 'KING', 'FORD');


ифода ename устунининг қиймати NULL бўлган қаторларни ўчирмайди. NOT IN оператори эса тўпламда NULL иштирок этганда FALSE қиймат қайтаради. Масалан


DELETE FROM emp WHERE ename NOT IN (NULL, 'KING');


ифода ҳеч қандай қаторларни ўчирмайди.

Конкатенация оператори


Конкатенация оператори битта белгили қаторни иккинчисига қўшиш учун ишлатилади. Масалан


'suit' || 'case' |= 'suitcase'




Бул ифодалар


PL/SQL ўзгарувчи ва ўзгармасларни солиштиришга имкон беради. Ушбу солиштиришлар бул ифодалар дейилади.




Арифметик ифодалар


Сонларни тенгликга ёки тенг эмасликга текшириш мумкин:


number1 = 75;


number2 = 70;

бўлганда қуйидаги ифода TRUE қиймат қайтаради:

number1 > number2


Белгили ифодалар


Белгили қийматларни ҳам тенгликга ёки тенг эмасликга текшириш мумкин:


string1 := 'Kathy';


string2 := 'Kathleen';

бўлганда, қуйидаги ифода TRUE қиймат қайтаради:


string1 > string2




Санавий ифодалар


Саналарни ҳам солиштириш мумкин:


date1 = '01-JAN-91';


date2 = '31-DEC-90';

бўлганда, қуйидаги ифода TRUE қиймат қайтаради:


date1 > date2




NULL қиймати


NULL қиймати билан ишлаганда қуйидаги қоидаларни унутманг:



  • NULL қатнашган солиштиришлар ҳамма вақт NULL қайтаради.

  • NOT мантиқий операторини NULL қўллаганда NULL ҳосил бўлади.

  • Шартли ифодаларда шарт натижаси NULL бўлса, унга боғлиқ бўлган жумлалар кетма-кетлиги бажарилмайди. Масалан

Мисол 1.


x := 5;
y := NULL;
...
IF x != y THEN -- TRUE ни эмас NULL қайтаради.
Операторлар кетма-кетлиги -- бажарилмайди.
END IF;

Мисол 2.

a := NULL;
b := NULL;
...
IF a = b THEN -- TRUE ни эмас NULL қайтаради.
Операторлар кетма-кетлиги -- бажарилмайди.
END IF;


NOT оператори


NOT мантиқий операторини NULL қўллаганда NULL ҳосил бўлишини эслатиб ўтамиз. Шундай қилиб қуйидаги иккита жумла ҳамма вақт ҳам эквивалент эмас:


IF x > y THEN | IF NOT x > y THEN


high := x; | high := y;
ELSE | ELSE
high := y; | high := x;
END IF; | END IF;

ELSE жумласидаги операторлар кетма-кетлиги бажарилади, агарда IF шарти FALSE ёки NULL бўлса. Демак x ва у бири ёки иккаласи NULL бўлса, биринчи IF жумла y қийматини high ўзгарувчига беради, лекин иккинчи IF жумла x қийматини high ўзгарувчига беради.




Нол узунликдаги қатор




PL/SQL нол узунликдаги қаторларни NULL деб қабул қилади:

null_string := TO_VARCHAR2('');


zip_code := SUBSTR(address, 25, 0);
valid := (name != '');

ўзгарувчилар NULL қийматни қабул қилади.


Конкатенация амали


Конкатенация амали NULL операндларни инкор қилади:


'apple'|| NULL || NULL || 'sauce' = 'applesauce'




Функциялар


Агар функцияга бўш қиймат узатилса у ҳолда у ҳам бўш қиймат қайтаради, қуйидаги ҳоллар бундан мустасно.


қуйидаги мисолда rating устунининг қиймати NULL бўлганда DECODE функцияси 1000 қийматни қайтаради:

SELECT DECODE(rating, NULL, 1000, 'C', 2000, 'B', 4000, 'A', 5000)


INTO credit_limit FROM accts WHERE acctno = my_acctno;

қуйидаги мисолда hire_date - нинг қиймати NULL бўлганда NVL функцияси SYSDATE қийматни қайтаради:


start_date := NVL(hire_date, SYSDATE);


new_string := REPLACE(old_string, NULL, my_string);


мисолда old_string ва new_string қийматлар бир хил.

syllabified_name := 'Gold-i-locks';


name := REPLACE(syllabified_name, '-', NULL);

мисолда name қиймати 'goldilocks' бўлади.




Ички қурилган функциялар


Ички қурилган функцияларни қуйидаги категорияларга бўлиш мумкин:



  • Хатоларни рўйхатга олиш функциялари

  • Сонли функциялар

  • Белгили функциялар

  • Берилганлар турларини алмаштириш функциялари

  • Саналар билан ишлайдиган функциялар

  • Объект билан ишлайдиган функциялар

  • Аралаш функциялар

Хар бир категориядаги функциялар рўйхатини қуйидаги жадвалда келтирамиз:




Download 0.95 Mb.

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




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