pl sql operators control statements tutorial
Научите о различитим ПЛ СКЛ операторима и Изјавама о контроли, попут иф-тхен-елсе, фор лооп, вхиле лооп итд., Са примерима примера кода:
У ПЛ / СКЛ наредбе туториал оф ПЛ / СКЛ серија , сазнали смо о наредбама ПЛ СКЛ ИНСЕРТ, УПДАТЕ, ДЕЛЕТЕ и СЕЛЕЦТ са примерима програмирања.
У овом чланку ћемо разговарати о различитим операторима које ПЛ / СКЛ подржава, попут релационих, логичких, аритметичких и упоредних оператора. Такође ћемо истражити контролне изјаве које се широко користе у ПЛ / СКЛ.
ПЛ / СКЛ услови и итеративне структуре детаљно су објашњени примерима овде у овом упутству.
оквир вођен подацима у примеру селена вебдривер
Шта ћете научити:
ПЛ СКЛ Оператори
ПЛ СКЛ оператер упућује компајлер да врши аритметичке и логичке операције уз помоћ симбола.
ПЛ / СКЛ подразумевано има следеће типове оператора:
- Аритметика
- Поређење
- Логичан
- Низ
- Релацијски
# 1) Аритметички оператори
Симбол | Опис | |
---|---|---|
7 | И | везник |
+ | Изводи додавање два операнда. | |
* | Изводи множење два операнда. | |
/ | Изводи поделу два операнда. | |
- | Изводи одузимање два операнда. | |
** | Изводи експоненцијалну операцију. |
Имплементација кода са аритметичким операторима:
declare a number(5):= 2; b number(5):= 1; res number(10); sub number(10); mul number(10); div number(10); exp number(10); begin -- adding a and b and storing in res res:= a+b; -- subtracting b from a and storing in sub sub:= a-b; -- multiplying a and b and storing in mul mul:= a*b; -- dividing a and b and storing in div div:= a/b; -- exponential operation and storing in exp exp:= a**b; dbms_output.put_line('Sum value is '||res); dbms_output.put_line('Subtraction value is '||sub); dbms_output.put_line('Multiplication value is '||mul); dbms_output.put_line('Division value is '||div); dbms_output.put_line('Exponential value is '||exp); end; /
Резултат горњег кода треба да буде:
# 2) Релациони оператери
Ови оператори изводе вредности поређења и враћања у логичкој вредности.
Серијски број. | Симбол | Опис |
---|---|---|
1 | > | Проверава да ли је вредност левог операнда већа од десне. |
два | < | Проверава да ли је вредност десног операнда већа од леве. |
3 | > = | Проверава да ли је вредност левог операнда већа од једнаке десном. |
4 | <= | Проверава да ли је вредност десног операнда већа од једнаке левом. |
5 | = | Проверава да ли су два операнда једнака. |
6 | ! =, ~ =, | Проверава да ли два операнда нису једнака. |
Имплементација кода са релационим операторима:
DECLARE a NUMBER := 5; b NUMBER := 12; BEGIN IF a != b THEN DBMS_OUTPUT.PUT_LINE('a is not equal to b'); ELSIF a = b THEN DBMS_OUTPUT.PUT_LINE('a is equal to b'); ELSE DBMS_OUTPUT.PUT_LINE ('Not sure of the input'); END IF; END; /
Резултат горњег кода треба да буде:
# 3) Оператори поређења
Овај оператор даје излаз као тачну, нетачну или нулу вредност на основу резултата упоређивања једне наредбе са другом.
Симбол | Опис |
---|---|
ИЗМЕЂУ | Проверава да ли вредност лежи у опсегу. |
ИН | Проверава да ли је вредност једнака скупу чланова. |
КАО | Проверава да ли је низ или знак сличан узорку. |
ИС НУЛЛ | Проверава да ли је операнд једнак вредности Нулл. |
Имплементација кода са оператором поређења:
DECLARE i INTEGER; -- NULL value is set by default BEGIN i := i*5; -- i is still NULL since NULL * 5 is NULL IF i IS NULL THEN DBMS_OUTPUT.PUT_LINE('i is NULL.'); END IF; END; /
Резултат горњег кода треба да буде:
# 4) Логички оператори
ПЛ / СКЛ подржава више од једног логичког оператора. Они делују на операнде који су логичке природе и такође дају логичке резултате.
Серијски број. | Симбол | Опис |
---|---|---|
1 | НЕ | Познат као логичан НЕ. Ако је резултат истинит, онда га НЕ прави лажним. |
два | И | Познат као логичан И. Ако су сви операнди тачни, резултат је тачан. |
3 | ИЛИ | Познат као логичан ИЛИ. Ако је неко од операнда тачан, резултат је тачан. |
Имплементација кода са логичким операторима:
declare n1 number := 5; n2 number := 10; n3 number := 15; begin if (n1 n2 or n1 = 5) then dbms_output.put_line ('The condition is true'); else dbms_output.put_line ('The condition is false'); end if; end; /
Резултат горњег кода треба да буде:
Предност оператора
Првенство ПЛ СКЛ оператора је постављено да дефинише како ће се извршити операција која укључује један или више оператора или више од једног операнда. Оператори са већим приоритетом израчунавају се први од осталих док се оператерима са истим приоритетом не манипулише у одређеном низу.
Доња табела наводи операторе од високог до малог приоритета.
Серијски број. | Симбол | Опис |
---|---|---|
1 | ** | експоненцијална операција |
два | +, - | сабирање, одузимање |
3 | *, / | множење, дељење |
4 | +, -, || | сабирање, одузимање, спајање |
5 | оператори упоређивања | |
6 | НЕ | негација |
8 | ИЛИ | инклузија |
Изјаве о контроли у ПЛ / СКЛ
Контролне структуре у ПЛ / СКЛ састоје се од програмских структура попут итерација, секвенца, и избор . Облик избора проверава стање, а затим на основу резултата тачног или нетачног обрађује следећи блок кода по реду.
Облик итерације непрекидно покреће блок кода или израза док не важи услов. Коначно, облик низа обрађује исказе један по један оним редоследом којим су присутни.
Изјава о стању у ПЛ СКЛ
У сценаријима доношења одлука користе се изјаве о стању попут ИФ-ТХЕН, ИФ-ТХЕН-ЕЛСЕ, ИФ-ТХЕН-ЕЛСЕИФ и ЦАСЕ.
# 1) АКО-ОНДА: Ово је један од основних облика ИФ изјава. Садржи блок кода са кључним речима ЕНДИФ и ТХЕН. Ако је резултат услова тачан, следећи блок кода се извршава у супротном случају.
Структура ИФ-ТХЕН:
IF condition THEN Block of code END IF;
Такође можемо задржати кратки блок ИФ –ТХЕН на једном реду попут овог.
IF big > small THEN temp: = big; END IF;
Имплементација кода са ИФ-ТХЕН:
DECLARE i number(10,2) := 15; BEGIN -- checking the condition IF( i > 2 ) THEN -- true condition dbms_output.put_line('i is greater than 1 ' ); END IF; dbms_output.put_line('the numeric value of i is '|| i); END; /
Резултат горњег кода треба да буде:
# 2) АКО-ОНДА-ОСТАЛО: Ово је следећи облик ИФ израза који има кључну реч ЕЛСЕ, а затим следећи блок кода. Овај блок ЕЛСЕ израза није обавезан и извршава се када је услов ФАЛСЕ.
Структура ИФ-ТХЕН-ЕЛСЕ:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Имплементација кода са ИФ-ТХЕН-ЕЛСЕ:
DECLARE num number(10,2) := 150; BEGIN -- checking the condition IF( num > 100 ) THEN -- true condition dbms_output.put_line('num is greater than 100 '); ELSE dbms_output.put_line('num is lesser than 100 '); END IF; dbms_output.put_line('value of number is : ' || num); END; /
Резултат горњег кода треба да буде:
# 3) АКО-ОНДА-ЕЛСИФ: Ова условна изјава даје могућност избора међу алтернативама. ЕЛСЕ ... ЕЛСЕ блок кода може опционално доћи након изјаве ИФ-ТХЕН. Стога се користи док се баве вишеструким међусобно искључивим изборима.
Блок кода ИФ-ТХЕН не може имати ниједан или више ЕЛСИФ-ова под условом да се појаве пре израза ЕЛСЕ. Једном када у једном блоку ЕЛСИФ наиђемо на тачно стање, остали ЕЛСЕ или ЕЛСИФ-ови ће се занемарити.
Структура ИФ-ТХЕН-ЕЛСИФ:
IF condition 1 THEN Block of code 1 ELSIF condition 2 THEN Block of code 2 ELSE Block of code 3 END IF;
Имплементација кода са ИФ-ТХЕН-ЕЛСИФ:
DECLARE num number(8,2) := 20; BEGIN IF ( num <15 ) THEN dbms_output.put_line('The num is greater than 15' ); ELSIF ( num = 15 ) THEN dbms_output.put_line('The num is 15' ); ELSIF ( num <= 20 ) THEN dbms_output.put_line('The num is less than equal to 20'); ELSE dbms_output.put_line('The num is invalid '); END IF; dbms_output.put_line('The num is : '|| num); END; /
Резултат горњег кода је:
# 4) ИЗЈАВА О СЛУЧАЈУ: Ова условна наредба ће одабрати један блок кода из избора. Међутим, као и ИФ изрази, ЦАСЕ не користи логички унос, већ израз који помаже у одабиру једне од опција.
Последњи избор ЦАСЕ израза је подразумевани. ИЗЈАВА О СЛУЧАЈУ је ефикаснија и мање дугачка у поређењу са ИФ изјавама.
Структура ПРЕДМЕТА:
CASE selector WHEN 'condition 1' THEN block of code 1; WHEN 'condition2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Имплементација кода са ИЗЈАВОМ СЛУЧАЈА:
DECLARE age number(5) := 15; BEGIN CASE age when '1' then dbms_output.put_line('Infant'); when '5' then dbms_output.put_line('In school'); when '15' then dbms_output.put_line('High school'); else dbms_output.put_line('Qualified for class 10 '); END CASE; END; /
Резултат горњег кода је:
# 5) ПРЕТРАЖЕНИ СЛУЧАЈ: Ова условна наредба је лишена било ког селектора, а ВХЕН блок кода даје само логичке резултате, а не и вредност других типова података.
Структура ПРЕТРАЖЕНОГ СЛУЧАЈА:
CASE WHEN 'condition 1' THEN block of code 1; WHEN 'condition 2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Имплементација кода са ИЗВРШЕНИМ ПРЕДМЕТОМ:
DECLARE model varchar(10) := '4'; BEGIN case when model = '1' then dbms_output.put_line('FIAT'); when model = '2' then dbms_output.put_line('TOYOTA'); when model = '3' then dbms_output.put_line('MARUTI'); when model = '4' then dbms_output.put_line('HYUNDAI'); else dbms_output.put_line('Premium MODEL'); end case; END; /
Резултат горњег кода треба да буде:
# 6) ГЊЕСТО АКО ОНДА И ОСТАЛО: Ова условна изјава даје одредбу о употреби ЕЛСЕ ИФ или ИФ блока унутар другог ИФ или ЕЛСЕ ИФ.
Структура НЕСТЕД ИФ-ТХЕН-ЕЛСЕ:
IF condition 1 THEN Block of code 1 IF condition 2 THEN Block of code 2 END IF; ELSE Block of code 3 when condition 1 is false END IF;
Имплементација кода са НЕСТЕД ИФ-ТХЕН-ЕЛСЕ:
DECLARE i number(10,2) := 65; j number(5) := 10; BEGIN -- checking the condition IF( i > 50 ) THEN -- if true move to the next IF statement IF( j <15 ) THEN dbms_output.put_line('In the nested if block' ); END IF; END IF; dbms_output.put_line('The value of first number is : ' || i ); dbms_output.put_line('The value of second number is : ' || j ); END; /
Резултат горњег кода треба да буде:
Итеративна изјава у ПЛ СКЛ
Док имплементирамо логику у ПЛ / СКЛ, можда ћемо захтевати да више пута обрадимо блок кода. То се постиже помоћу ЛООП изјава. Ово су три врсте, ФОР-ЛООП, ВХИЛЕ-ЛООП и ЛООП.
# 1) ПЛ СКЛ ЛООПС
ЛООП има основну структуру као у наставку:
LOOP Block of code END LOOP;
Након сваке итерације, ток програма показује натраг на врх петље док се не испуни одређени услов. У случају да желимо да изађемо из петље због ситуације, у том случају се може користити наредба ЕКСИТ.
# 2) ПЛ СКЛ ДОК ЛООП
Ова петља ће више пута изводити блок кода док не буде важећи услов. На почетку сваке итерације проверава се стање петље. Ако је задовољен, извршава се блок кода.
Ако је услов ништаван или није задовољен, петља се избегава и извршава се следећи блок кода.
Структура ВХИЛЕ ЛООП:
WHILE condition LOOP Block of code END LOOP;
Имплементација кода са ВХИЛЕ ЛООП:
DECLARE num number(10,1) := 3; BEGIN WHILE num <4 LOOP dbms_output.put_line('The value of number: ' || num); num := num + 1; END LOOP; END; /
Резултат горњег кода треба да буде:
# 3) ПЛ СКЛ ЗА ЛООП
Ова врста петље омогућава извршење блока кода одређени број пута. Почетни корак се извршава једном. Ово се првенствено користи за иницијализацију и декларацију променљивих петље. Тада се проверавају граничне вредности (почетни и завршни опсег). Ако је услов задовољен, извршит ће се блок кода унутар ЛООП-а. Ако није, ток програма се премешта на следећи блок кода након петље.
После једне итерације, бројач петље се повећава или смањује за један. Читав процес се наставља док се не задовољи услов петље. Како услов постаје ФАЛСЕ, петља се завршава.
У ПЛ / СКЛ, почетни и завршни опсег петље могу се променити у време извођења. Бројач петље треба да буде цео број, број итд. (Који се може нумерички повећати или смањити). Почетна вредност променљиве бројача може бити било који број.
Структура ФОР ЛООП:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Имплементација кода ФОР ЛООП:
DECLARE num number(10,1); BEGIN FOR num in 1.. 5 LOOP dbms_output.put_line('The num is:' || num); END LOOP; END; /
Резултат горњег кода треба да буде:
# 4) НЕСТЕД ЛООП
Ова врста израза дозвољава једну петљу преко друге. Спољна и унутрашња структура петље могу бити истог или различитог типа. После сваког преласка, обе петље морају успешно да се покрену.
Структура угнежђене петље:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Имплементација кода са НЕСТЕД ЛООП:
BEGIN FOR i IN 1..2 LOOP FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
Резултат горњег кода треба да буде:
Ознаке петље у ПЛ / СКЛ
У ПЛ / СКЛ имамо одредбу означавања петљи која повећава читљивост и значење кода. Ознака је представљена двокутним заградама ( << и >> ) и помињу се на врху изјаве ЛООП. Ознака се може ставити и на крај ЛООП-а.
Ознака се такође може описати за ЕКСИТ изразе док излази из петље.
Структура ОЗНАКА:
<> LOOP Block of Code END LOOP;
Имплементација кода са ЛООП ЛАБЕЛ:
BEGIN <> FOR i IN 1..2 LOOP <> FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
Изјаве о контроли секвенце
Изјава о контроли се користи за модификовање тока извршавања програма.
# 1) ИЗЛАЗ
Израз ЕКСИТ експлицитно прекида петљу. Када се ЕКСИТ пронађе у петљи, петља се прекида и ток програма прелази на следећи блок кода. У условима када користимо угнежђене петље, наредба ЕКСИТ прво ће завршити унутрашњу петљу, а затим извршити блок кода који се појављује одмах након ње.
Имплементација кода са ЕКСИТ-ом:
DECLARE num number(10,1) := 15; BEGIN -- loop condition WHILE num <20 LOOP dbms_output.put_line ('The num is: ' || num); num := num + 1; IF mod(num, 2) = 0 THEN -- exit from loop EXIT; END IF; END LOOP; END; /
Резултат горњег кода треба да буде:
# 2) НАСТАВАК
Ова контролна изјава омогућава петљи да изађе и пређе на следећу итерацију која ће се одржати.
Имплементација кода са НАСТАВАК:
DECLARE num number(10,1) := 5; BEGIN -- while loop execution WHILE num <9 LOOP dbms_output.put_line ('The number is : ' || num); num := num + 1; IF mod(num,2) = 0 THEN num := num + 1; CONTINUE; END IF; END LOOP; END; /
Резултат горњег кода треба да буде:
# 3) ГОТО
Изјава ГОТО безусловно премешта контролу у јединствени означени блок кода. Није добра програмска техника користити ГОТО изјаве јер смањује читљивост и сљедивост кода.
Структура ГОТО:
GOTO 60; .. .. <> Block of code 1;
Имплементација кодирања са ГОТО изјавом:
BEGIN GOTO message_two; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Tutorial' ); GOTO message_third; <> DBMS_OUTPUT.PUT_LINE( 'Software Test Help!' ); GOTO message_one; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Control Statement' ); END;
Резултат горњег кода треба да буде:
Често постављана питања
П # 1) Који је контролни израз у ПЛ / СКЛ-у?
Одговор: Контролни изрази у ПЛ / СКЛ имају три врсте - наредбе петље, секвенцијални изрази и контролни изрази. Изјава петље састоји се од ВХИЛЕ ЛООП, ФОР ЛООП и басиц ЛООП.
К # 2) Како се проверава једнакост у ПЛ / СКЛ?
Одговор: У ПЛ / СКЛ имамо оператор једнакости који проверава једнакост.
На пример,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
П # 3) Како зауставити бесконачну петљу у ПЛ / СКЛ-у?
Одговор: Можемо зауставити бесконачну петљу у ПЛ / СКЛ уз помоћ ЕКСИТ израза. Изјаве ЕКСИТ морамо држати унутар петље, а не изван петље.
П # 4) Која је сврха условне контролне структуре у ПЛ / СКЛ?
Одговор: Условна контролна структура даје могућност управљања протоком програма у зависности од неких критеријума. Стога се код у програму не извршава у низу. Блок кода се извршава на основу услова.
П # 5) Који су 6 релационих оператора?
Одговор: Релациони оператори ПЛ / СКЛ су =,,! =, ==.
П # 6) Који су различити типови оператора?
Одговор: Различите врсте оператора у ПЛ / СКЛ наведене су у наставку:
- Бит-ови оператори
- Оператори доделе
- Аритметички оператори
- Релациони оператори
- Логички оператори
Закључак
У овом упутству обрадили смо велики део ПЛ / СКЛ-а који се бави примерима кода као што су вишеструки оператори и њихова важност.
Такође, детаљно смо истражили ПЛ СКЛ изјаве о контроли. Контролни изрази састоје се од програмских структура попут итерације, стања и секвенце.
У следећем упутству разговараћемо о ПЛ СКЛ процедурама, функцијама, курсорима и многим другим сродним темама.
Препоручено читање
- ПЛ СКЛ лекције за почетнике са примерима | Шта је ПЛ / СКЛ
- Питхон Оператори
- Условне изјаве Уника: ако је то случај друго и релациони оператори
- Изјаве о контроли Питхона (Питхон Цонтинуе, Бреак анд Пасс)
- Водич о условним изјавама за Ц #
- Контрола извора или контрола верзија у ДевОпс-у (Видео водич, 2. део - блок 2)
- Петље у Ц #: Контролне изјаве и разне петље са примерима
- Водич за корњаче СВН: Ревизије у спремишту кода